確認するシェルスクリプトを作成しました。それ以外の場合は、その値を環境変数PATH
に追加します。PATH
シェルスクリプト内の操作に基づいてecho $PATH
正常に追加されました。ただし、コマンドラインから実行しようとすると、echo $PATH
変更は反映されません。
これは私のコードです。
#!/bin/bash
postgresPath="/opt/PostgreSQL/9.2/bin"
echo "Checking PATH env.."
[[ ":$PATH:" != *"$postgresPath"* ]] && export PATH="${PATH}:$postgresPath"
echo $PATH
ベストアンサー1
スクリプトは独自の環境で実行されます。これは、スクリプトが実行される親シェルの環境には影響しません。つまり、$PATH
スクリプトの変更は$PATH
対話型シェルでは変更されません。
小さな例:
$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
$ ( PATH="hello"; echo "$PATH" )
hello
$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
export
PATH
(すでにエクスポートされている変数なので、サブシェルで変数を再利用してもかまいません。)
.
source
現在のシェルと同じ環境でコマンドを実行するスクリプトを使用またはインポートするか、スクリプトをシェル関数に変換することをお勧めします。