2008-10-08 3 views

답변

12

bash를 우리의 셸로 사용하지 않는 것은 좋은 경고입니다. 왜냐하면 일상적인 셸에있는 기능을 사용할 수 없을 때 이 코드는 지정된 시간에 실행됩니다.

[email protected]$ at 23:00  
warning: commands will be executed using /bin/sh 
at> rm **/*.pyc 
at> <EOT> 
job 1 at 2008-10-08 23:00 

의 사용 '**'이 완벽하게 유효 zsh을 아니지만 경우/sbin/sh를! 다른 쉘을 사용하는 데 익숙하다면 이러한 실수를 저지르는 것이 쉽습니다. 올바른 일을해야한다는 것을 기억해야합니다.

+0

/bin/sh는 Bourse가 아닌 Bourne 셸입니다. –

+1

Heck,/bin/sh가 bash에 심볼릭 링크 될 때에도/bin/bash 및/bin/sh조차 다르게 작동합니다. – ephemient

+0

@John 잘 일반적으로 bash에 대한 심볼릭 링크입니다 ... (우분투가 아니기 때문에 ... 중요합니다) – Spudd86

2

이 지정된 환경을 호출하는 스크립트를 실행 '에서'해당 메시지를 해결하기가하고자하는 경우

또한, KSH 그것은 등, 배시, csh, zsh을, 펄, 수 -을 참조하십시오 'at'매뉴얼 페이지 http://www.rt.com/man/at.1.html.

at and batch read commands from standard input or a specified file which are to be executed at a later time, using /bin/sh. 
+2

아니요, 경고 메시지를 끄려면 어떻게합니까? * – raldi

4

경고는 성가신 것 외에 어떤 유해한 영향을 미치나요? 맨 페이지에는 아무 것도 언급하지 않았으므로 소스에서에 을 다시 작성하지 않고 방출되는 것을 막을 수 있다고 생각하지 않습니다. 당신은 단지 그것을 볼하려면

이제, 당신은 [시간] 2>는/dev에 을 사용할 수 있습니다/ 널 (null)이 에서, 불행하게도, 망각에를 보내지 만에> 메시지가 인쇄됩니다 어떤 이유로 STDERR (버그, IMO - 그들은 정말로 STDOUT으로 가야한다.) 그래서 이것 또한 숨겨져있다. 프롬프트를 먹지 않고도 경고를 제거 할 수있는 셸 배관 공사를하는 것이 가능할 수 있습니다. 그러나이 시도 ([012] 2시 & 1 | grep -v 경고)에서 내 시도가 작동하지 않으며 b) 작동하는 조합을 찾을 수 있다고하더라도 에일리어싱에는 적합하지 않습니다. (시간이 끝이 아니라 중간에 있기 때문에) 사용할 때마다 전체 입력해야합니다. 그렇지 않으면 주위의 래퍼 스크립트를에 작성하여 처리하십시오.

실제 문제가 발생하지 않는 한, 나머지 사용자들과 마찬가지로 경고를 무시하는 것이 가장 좋습니다.

+1

아, 멋진 추가 STDERR이 아니라 STDOUT에 관한 정보. 항상 정상적인 리디렉션이 작동하지 않는 이유가 궁금했습니다. STDERR에 쓰는 부작용은 관리자에게 전자 메일을 보내는 것입니다 (내 로컬 시스템에 있음). 해로운 영향은 없지만 예민한 성격입니다 .-) – Michel

3

명령이 표준 Bourne Shell에 의해 실행된다는 것을 알려줍니다. 즉, 명령 구문이 해당 쉘과 호환되어야한다는 것을 의미합니다. ("재미"사실 :.. 난 그냥 당신 불구하고 현재 쉘 /bin/sh입니다 경고하는 버그이어야합니다주의)

에 '쉽게 해킹'메시지가 단순히 첫째을 제거하는 것입니다 제거 라인 출력. 이것은 at 명령을 재정의하는 편리한 방법으로 수행 할 수 있습니다

at() { /usr/bin/at [email protected] 2>&1 | tail -n +2; } 

당신은 다른 쉘 별칭 (쉘에 대한 ~/.bashrc, ~/.zshrc 상당)가 포함 된 파일에 추가 할 수 있습니다.

참고 : 위의 '해킹'의 tail 명령은 인라인 명령을 작성할 때 at> -prefix를 제거합니다. 아마 거래 차단기가 아니라 알고 있어야 할 것입니다.

관련 문제