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' にインストールされている場合、前者は失敗しますが、後者は引き続き動作します。