シェルスクリプト内で使用した場合、source コマンドは機能しません

シェルスクリプト内で使用した場合、source コマンドは機能しません

ファイルに環境変数を追加するインストーラーを使用しています~/.bash_profile

jetty サーバーを起動すると、そのエントリが見つかりません...

走るとき

$ source ~/.bash_profile

ファイルが再ロードされ~/.bash profile、サーバーは問題なく正常に起動します。

問題は、顧客が新しいシェル セッションを開始せず、~/.bash_profileファイルを手動で更新もしないことです。

source ~/.bash_profilejetty サーバーの起動スクリプトを呼び出すときに呼び出すシェル スクリプト内にコマンドを追加しようとしましたが、これも機能しません。

現在のセッションをリロードする他の方法はありますか~/.bash_profile? 提供していただける情報があれば、大変ありがたく思います。

答え1

シェル スクリプトは通常、bash によって実行されません (明示的に指定した場合を除く)。

多くの Linux システムでは、 /bin/sh は現在 でありdash、 はsourceからインポートされた非標準のシェル コマンドであるためcsh、 dash などのシェルはこれをサポートしていないことに注意してください。

POSIX で定義されたドット コマンド ( .) は、渡すファイル パラメーターに非標準の拡張子が含まれていない限り機能します。

関連情報