実行時に、呼び出し元のシェルに設定されたままになるいくつかの環境変数を設定するシェルスクリプトを作成しようとしています。
setenv FOO foo
csh / tcsh、または
export FOO=foo
sh / bashでは、スクリプトの実行中にのみ設定してください。
私はすでにそれを知っています
source myscript
新しいシェルを起動するのではなく、スクリプトのコマンドを実行します。これにより、「呼び出し元」の環境が設定される可能性があります。
しかし、ここにこすりがあります:
このスクリプトをbashまたはcshから呼び出し可能にしたい。つまり、どちらのシェルのユーザーもスクリプトを実行して、シェルの環境を変更できるようにする必要があります。したがって、cshを実行しているユーザーはbashスクリプトをソースできず、bashを実行しているユーザーはcshスクリプトをソースできないため、「source」は機能しません。
スクリプトに2つのバージョンを記述して維持する必要がない合理的な解決策はありますか?
シェルプロセスには親の環境のコピーがあり、親プロセスの環境にはまったくアクセスできません。シェルプロセスが終了すると、その環境に加えた変更はすべて失われます。スクリプトファイルのソーシングは、シェル環境を構成するために最も一般的に使用される方法です。弾丸を噛み、シェルの2つのフレーバーのそれぞれに1つずつ維持したい場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加