`at`에서 / bin / sh를 사용하여 명령이 실행된다고 경고하는 이유는 무엇입니까? 다른 쉘을 원한다면 어떻게해야합니까?


12

나는 at내 스크립트에서 사용하려고 시도 하고 인쇄합니다.

경고 : 명령은 / bin / sh를 사용하여 실행됩니다

원하는 경우 다른 쉘을 어떻게 사용합니까?

답변:


14

Linux에서는 at항상 /bin/sh선호하는 쉘이 아닌로 지정된 명령을 실행한다는 경고가 표시됩니다 . 이 메시지는 표시 할 수 없으며 소스 코드에 하드 코딩되어 있습니다.

전달한 명령은로 해석됩니다 /bin/sh. 이 명령은 원하는 경우 스크립트의 경로가 될 수 있습니다. 그런 다음 /bin/sh스크립트 프로그램을 실행하여 스크립트 인터프리터가 시작되고 스크립트를 해석합니다. 스크립트 언어는 스크립트를 시작하는 프로그램과 완전히 독립적입니다. 예를 들어 bash 스크립트 (예 :로 시작하는 스크립트 #!/bin/bash)를 실행하려면 스크립트 경로를 전달 at하고 관련이없는 메시지를 무시하십시오.


4

스크립트 shebang을 변경하여 다른 쉘에서 실행할 수 있습니다 . 전형적인 셰방 라인 :

#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell
#!/bin/csh -f — Execute the file using csh, the C shell,
#!/usr/bin/perl -T — Execute using Perl with the option for taint checks
#!/usr/bin/php — Execute the file using the PHP command line interpreter
#!/usr/bin/python -O — Execute using Python with optimizations to code
#!/usr/bin/ruby — Execute using Ruby

주어진 시간에 스크립트를 실행하려면 cronjob 을 추가하는 것이 좋습니다

예:

다음 행은 사용자 프로그램 test.pl (명백히 Perl 스크립트)을 자정, 오전 2시, 오전 4시, 오전 6시, 오전 8시 등 2 시간마다 실행합니다.

0 * / 2 * * * /home/username/test.pl


#!/usr/bin/perl는 이미 내 스크립트에서 shebang이지만 경고 메시지가 나타납니다
Cratylus

@Cratylus는 설명을 위해 여기 를 살펴보십시오 .
vfbsilva

+1 shbang과 루비와 펄에 대한 언급. 또한 "#! / bin / env ruby"사용을 고려하십시오.
ChuckCottrill

내 후 여전히 불평 #!/bin/sh....?
gloomy.penguin 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.