예, C-shell이 나쁘다는 것을 알고 있습니다. 아니요, C쉘을 선택하지 않았습니다. 예, 저는 적절한 케이스를 사용하는 것을 선호합니다. 아니요, 더 나은 쉘로 전환할 수 없습니다.
매우 간단한 스크립트가 있습니다.
/tmp/env_test.csh
#!/bin/csh -f
env
tcsh 쉘을 사용하여 로그인한 사용자로부터 이 스크립트를 실행하면 SHELL
과 같습니다 /bin/tcsh
. cron에서 이 스크립트를 실행하면 SHELL
과 같습니다 /bin/sh
.
SHELL이 제대로 업데이트되지 않는 이유는 무엇입니까? 이 문제를 해결하려면 어떻게 해야 합니까?
답변1
조사 man 1 csh
. 이 섹션에는 Pre-defined and environment variables
정의되거나 따르는 변수가 나열되어 있습니다 csh
. 소문자 변수 가 있습니다 shell
:
shell The file in which the shell resides. This variable is used in
forking shells to interpret files that have execute bits set,
but which are not executable by the system. (See the descrip-
tion of Non-builtin Command Execution below.) Initialized to
the (system-dependent) home of the shell.
그럼 살펴보겠습니다:
% echo $shell
/bin/csh
답변2
crontrab에서 이 변수를 설정해야 하며 SHELL
다음을 통해 cron 환경 변수를 확인할 수 있습니다./bin/csh
* * * * * env > ~/cron-env
tail -f ~/cron-env
기본값 SHELL
은 으로 설정되어야 합니다 /bin/sh
.