スクリプトからファイルをインポートする

スクリプトからファイルをインポートする

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

追加の参照のためにこの方法は機能しますが、shebangでtcshパスとして使用しないでください。

 #!/bin/tcsh 

代わりに「env」パスを使用してください。

 #!/usr/bin/env tcsh

tcshが別のパスにインストールされているシステムに柔軟性を許可します。たとえば、「tcsh」が「/usr/bin/tcsh」にインストールされている場合、前者は失敗しますが、後者は引き続き機能します。

関連情報