스크립트 내에서 파일 소싱

스크립트 내에서 파일 소싱

tcsh 스크립트 내에서 파일을 소스로 만들고 싶습니다. 코드에서:

#!/bin/tcsh

unsetenv LD_LIBRARY_PATH
source $1    
echo $LD_LIBRARY_PATH > temp_file

예상 결과:source 명령을 사용하여 스크립트에서 설정한 환경 변수는 임시 파일에 인쇄됩니다.

실제 결과:소스 파일은 훌륭하게 실행되지만 LD_LIBRARY_PATH변수는 비어 있습니다.

이것을 작동시키는 방법에 대한 아이디어가 있습니까?


추신 tcsh물론 내가 선택한 쉘은 아니지만 tcsh작업하려는 수많은 환경 변수를 설정하는 스크립트가 직장에 있습니다 bash. 나는 (매번 쉘을 다시 작성하는 것 외에 tcsh) 가장 쉬운 방법은 그것을 소싱하고, 변수를 파일로 인쇄하고, 약간의 쉘 마법을 사용하여 모든 것을 bash에서 다시 리소스하는 것이라고 생각했습니다.

답변1

OpenBSD에서 csh를 사용해 보았습니다. 내 예제는 tcsh에서도 작동하는 것 같습니다.

파일 test.csh:

#!/bin/csh
source data.csh
echo $VARIABLE

파일 데이터.csh

#!/bin/csh
setenv VARIABLE 1234

결과:

$ csh test.csh
1234

답변2

추가 참조를 위해 이것은 실제로 작동하지만 tcsh 경로에 shebang을 사용해서는 안됩니다:

 #!/bin/tcsh 

대신 'env' 경로를 사용하세요.

 #!/usr/bin/env tcsh

다른 경로에 설치된 tcsh가 있는 시스템에서 유연성을 허용합니다. 예를 들어, 'tcsh'가 '/usr/bin/tcsh'에 설치되어 있으면 전자는 실패하지만 후자는 계속 작동합니다.

관련 정보