Bash

echo $PATH 不反映我在 shell 腳本中創建的“導出路徑”

  • July 25, 2019

我創建了一個 shell 腳本,它將檢查某個值是否存在於PATH. 如果沒有,那麼它將將該值添加到PATH環境變數中。

它已成功添加,基於echo $PATHshell 腳本中的執行。但是當我嘗試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

該腳本在其自己的環境中執行。它不會影響其父 shell 的環境(您從中啟動腳本),即$PATH腳本中的更改不會$PATH在您的互動式 shell 中更改。

一個小例子:

$ 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(如果我在子shell中再次使用變數並不重要,PATH因為它已經導出了)

我建議使用.or獲取腳本source,這將在與目前 shell 相同的環境中執行其中的命令,或者將腳本轉換為 shell 函式。

引用自:https://unix.stackexchange.com/questions/394689