Bash:「設定」が私が期待どおりに機能しないのはなぜですか?

Bash:「設定」が私が期待どおりに機能しないのはなぜですか?

エクスポートした変数の値のみがMac OS .bash_profileXを介してPATH変数に追加されることを確認しました。ただし、変数の値をローカルに設定することはできません。ローカル変数をパスに追加できないのはなぜですか?


「何か間違っていると思いますが、混乱するコードを投稿してみてください。 — Giles 昨日。」

このスニペットを考慮して、MONGODB変数を次のように設定しました。

set MONGODB="/usr/local/mongodb/bin"    
export PATH=${PATH}:${MONGODB}

私はターミナルにいsource .bash_profileます。次のエコーが表示されます。

PATH=~/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:

しかし、代わりにMONGODBをエクスポートして自分のものを取得すると、次.bash_profileのようなエコーが表示されます。

PATH=~/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/local/mongodb/bin

おそらくset不適切な使用ですか?

ベストアンサー1

set MONGODB="/usr/local/mongodb/bin"

これは変数の割り当てではありません。 (Cシェル(csh、tcsh)の1つですが、Bourneスタイルのシェル(sh、ash、bash、ksh、zshなど)の1つではありません。)これは組み込み関数の呼び出しですset。位置引数を設定します(待機など$1$2。次に、端末でこのコマンドを実行してみてくださいecho $1

シェル変数に値を割り当てるには、次のようにします。

MONGODB="/usr/local/mongodb/bin"

これにより、使用可能なシェル変数(名前が指定されたパラメータとも呼ばれる)が生成されます$MONGODB。変数は、.exportを使用してエクスポートしない限り、シェル内に保持されますexport MONGODB。エクスポートされた場合、変数はこのシェルで開始されたすべてのプロセスにも表示されます。環境。ジョブとエクスポートを1行に圧縮できます。

export MONGODB="/usr/local/mongodb/bin"

MONGODB現在実行中の操作の場合、スクリプトの外にある必要はなく、PATHすでにエクスポートされています(変数をエクスポートした後に新しい値を割り当てると、環境に反映されます)。したがって、次のように書くことができます。

MONGODB="/usr/local/mongodb/bin"    
PATH=${PATH}:${MONGODB}

おすすめ記事