echo $ PATHは、シェルスクリプトによって実行された「エクスポートパス」を反映しません。

echo $ PATHは、シェルスクリプトによって実行された「エクスポートパス」を反映しません。

確認するシェルスクリプトを作成しました。それ以外の場合は、その値を環境変数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

http://rextester.com/RBLTT17164

ベストアンサー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

exportPATH(すでにエクスポートされている変数なので、サブシェルで変数を再利用してもかまいません。)

.source現在のシェルと同じ環境でコマンドを実行するスクリプトを使用またはインポートするか、スクリプトをシェル関数に変換することをお勧めします。

おすすめ記事