`source .../settings.csh` は `sh ./test.sh` では実行できません。

`source .../settings.csh` は `sh ./test.sh` では実行できません。

setiin64.cshこのコマンドを使用してXilinx iseファイルを取得したいと思いますsource

私は持っています

source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh

他のファイルから.soファイルをtest.sh実行したいです。test.sh

sh ./test.sh 

しかし、これにより、Xilinx ISE 14.5のバージョンが表示されませんwhich ise

私がコマンドを実行すると

source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh

端末で直接うまく機能します。

答え1

setiin64.cshC-shellスクリプトがC-shellと互換性がない場合は、shシェルsource /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.cshで機能しないでくださいsh。しかし、あなたがそう言うので、私はあなたの言葉を受け入れなければなりません。

sh test.shそのファイルをインポートして実行し、環境変数が含まれると予想するスクリプトを作成することはできません。現在のシェル環境。

このコマンドはソースに使用されるsh test.sh新しい環境を設定します(まだこれが実際に動作するとは信じ難いです。スクリプトだからです)。実行が完了すると、この新しい環境は削除されます。ここで設定されたすべての変数は、最も外側の環境(シェルセッション)には送信されません。sourcesetiin64.cshcshtest.sh

あなたはできます

source test.sh

しかし、これがまさに最初から行うことです。代わりにシンボリックリンクを取得することもできます/home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh

最善の解決策は、おそらくコマンドライン(またはシェル初期化ファイルのいずれか)からファイルをインポートすることです。

関連情報