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

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

set다음과 같이 입력하면 명령이 제대로 작동합니다.

echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
set START_TIME=`date +%s`
echo $START_TIME
1499360060

tcsh그러나 다음과 같이 명시적으로 호출하면 작동하지 않습니다.

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

처음에는 이 작업을 시도했지만 setenv하위 프로세스가 명령을 실행할 수 없다는 것을 깨달았습니다 setenv. 그래서 나는 set그것이 갈 길이라고 생각합니다. 이 문제를 해결할 수 있는 다른 더 좋은 방법이 있는지 조언해 주십시오. 감사해요.

답변1

문제는 서브셸에서 변수를 설정한 다음 서브셸이 종료되고 변수도 함께 가져간다는 것입니다. 전시하다:

$ /bin/tcsh -ifc 'set VARIABLE=foo; echo $VARIABLE'; echo ${VARIABLE-blank}
foo
blank

(내 기본 쉘은 입니다 bash. 두 번째 쉘은 ism을 echo사용하여 bash정의되지 않거나 널 변수 확장에 대한 기본값을 제공합니다)

관련 정보