Bash
echo $PATH 不反映我在 shell 腳本中創建的“導出路徑”
我創建了一個 shell 腳本,它將檢查某個值是否存在於
PATH
. 如果沒有,那麼它將將該值添加到PATH
環境變數中。它已成功添加,基於
echo $PATH
shell 腳本中的執行。但是當我嘗試echo $PATH
在命令行中執行時..它並沒有反映所做的更改。這是我的程式碼:
#!/bin/bash postgresPath="/opt/PostgreSQL/9.2/bin" echo "Checking PATH env.." [[ ":$PATH:" != *"$postgresPath"* ]] && export PATH="${PATH}:$postgresPath" echo $PATH
該腳本在其自己的環境中執行。它不會影響其父 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 函式。