
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'에 설치되어 있으면 전자는 실패하지만 후자는 계속 작동합니다.