スクリプト内でファイルをソースする

スクリプト内でファイルをソースする

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

ファイル data.csh

#!/bin/csh
setenv VARIABLE 1234

結果:

$ csh test.csh
1234

答え2

さらに参考までに、これは確かに機能しますが、tcsh パスにシェバンを使用しないでください。

 #!/bin/tcsh 

代わりに 'env' へのパスを使用します。

 #!/usr/bin/env tcsh

tcsh が異なるパスにインストールされているシステムで柔軟性を実現します。たとえば、'tcsh' が '/usr/bin/tcsh' にインストールされている場合、前者は失敗しますが、後者は引き続き動作します。

関連情報