명시적으로 호출하면 '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'  

그런 다음 둘 다 쉘에 대한 동일한 호출에서 실행됩니다. 원하는 경우 이 명령을 echoPython 프로그램 호출로 바꾸세요.

관련 정보