Bash

.bash_profile 中 export PATH=... 的含義

  • March 9, 2019

我使用 Mac 已經有幾年了,因為我目前正在學習 ruby​​ on rails,所以我覺得我應該更多地了解我正在使用的系統。我看了一下~/.bash_profile,好像是這樣的

PATH="/Users/nikolajandersen/.apportable/SDK/bin:$PATH"

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM$

# Setting PATH for Python 3.3
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}"
export PATH
export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/bin:$PATH

由於有兩條相同的export PATH=/usr/local/bin:$PATH線,我試圖刪除一條。結果,諸如 nano 和 ls 之類的命令不再起作用。我恢復了更改,但我不明白為什麼必須說兩次。

另一個問題是:為什麼有時會 $ PATH and sometimes just PATH without the $ ? 為什麼-s "$HOME/.rvm/scripts/rvm"站在

$$ [ $$] 大括號?有什麼作用export PATH更新這是輸出echo $PATH

/usr/local/bin:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin:/Users/nikolajandersen/.rvm/gems/ruby-2.0.0-p353/bin:/Users/nikolajandersen/.rvm/gems/ruby-2.0.0-p353@global/bin:/Users/nikolajandersen/.rvm/rubies/ruby-2.0.0-p353/bin:/Users/nikolajandersen/.rvm/bin:/Users/nikolajandersen/.apportable/SDK/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/sm/bin:/opt/sm/pkg/active/bin:/opt/sm/pkg/active/sbin

看來您對換行符是正確的。我再次刪除了該行並確保最後有一個空行。現在命令仍然有效。

PATHbefore=是一個變數名,組合告訴將bash後面的東西儲存=在變數中。是到那時為止的變數 PATH 的值

$PATH

該組合PATH="some_path_to_stuff:$PATH" 擴展了 PATH 變數。這bash是一個冒號 ( :) 分隔的列表。


關於雙重添加/usr/local/bin,我只能猜測第二個版本後面沒有換行符(並且在文件末尾)。原則上,這應該給你一個以/usr/local/bin:/usr/local/bin:..... 你可以檢查一下

echo $PATH

如果只有一次,/usr/local/bin那麼請執行以下操作:

echo "" >> ~/.bash_profile

並登錄並嘗試$PATH再次列印。

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