명시적으로 호출하면 'setenv' 명령이 tcsh 쉘에서 작동하지 않습니다.

명시적으로 호출하면 'setenv' 명령이 tcsh 쉘에서 작동하지 않습니다.

다음과 같이 tcsh 쉘에서 setenv 명령을 제대로 실행할 수 있습니다.

echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
setenv START_TIME `date +%s`
echo $START_TIME
1499355967

하지만 아래와 같이 명시적으로 실행할 때마다 작동하지 않습니다. Python 하위 프로세스 호출을 통해 실행할 때 쉘을 지정해야 하기 때문에 이 작업을 수행해야 합니다. 그렇지 않으면 sh기본값으로 쉘을 호출합니다.

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`'
echo $START_TIME
START_TIME: Undefined variable.

여기서 문제가 무엇입니까? 이 문제를 온라인에서 검색했지만 이와 유사한 문제를 찾을 수 없습니다. 이것은 매우 실망스럽습니다.

답변1

/usr/bin/tcsh스크립트의 첫 번째 줄에서 을 사용하면 별도의 셸 호출을 실행하게 됩니다 . 명령은 echo명령이 들어 있는 '인클로징' 셸에서 실행됩니다.

왜 달리지 않니?둘 다다음과 같이 첫 번째 줄에 명령을 입력합니다.

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`; echo $START_TIME'  

그런 다음 둘 다 동일한 쉘 호출에서 실행됩니다. echo원하는 경우 명령을 Python 프로그램 호출로 바꾸십시오 .

관련 정보