Bash

重複的 PATH 條目 - 不知道它們是從哪裡設置的

  • October 7, 2016

export PATH=TL;DR 改變我的路徑的東西,即使在從 bashrc中註釋掉該行時,我的自定義目錄也會增加三倍


最近我在 my.bashrc中添加了一行,將兩個自定義目錄添加到路徑中:

export PATH=~/Documents/Code/Own/Scripts/:~/Misc/Applications/phantomjs-2.1.1-linux-x86_64/bin:$PATH

一切看起來都很好,沒有問題。但是,今天,我檢查了路徑以查看我擁有哪些目錄,並發現自定義目錄存在 3 次:

echo $PATH
/home/myusername/Documents/Code/Own/Scripts/:/home/myusername/Misc/Applications/phantomjs-2.1.1-linux-x86_64/bin:/home/myusername/Documents/Code/Own/Scripts/:/home/myusername/Misc/Applications/phantomjs-2.1.1-linux-x86_64/bin:/home/myusername/Documents/Code/Own/Scripts/:/home/myusername/Misc/Applications/phantomjs-2.1.1-linux-x86_64/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/myusername/.local/bin:/home/myusername/bin

奇怪,我心想。我將從我的 bashrc 中註釋掉該行 - 由於某種原因,它必須被採購三次。在終端中打開一個新選項卡 - 第一對自定義目錄已消失,但其他兩個仍然存在

/home/myusername/Documents/Code/Own/Scripts/:/home/myusername/Misc/Applications/phantomjs-2.1.1-linux-x86_64/bin:/home/myusername/Documents/Code/Own/Scripts/:/home/myusername/Misc/Applications/phantomjs-2.1.1-linux-x86_64/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/myusername/.local/bin:/home/myusername/bin

所以,也許這只是 GNOME 終端保存每個會話的路徑的問題。通過 TTY 登錄並且路徑正確 - 沒有重複條目(我的 bashrc 仍然通過 bash_profile 行獲取)。但是,使用 xterm 時問題仍然存在——這意味著它與 GNOME 終端無關。

我不明白的是,當我從 bashrc 註釋掉該行並且從未在其他任何地方添加它時,什麼文件正在更改路徑。有任何想法嗎?

如果您在 GNOME 終端中打開一個新選項卡,它會將環境複製到新的 shell,而不是創建一個新的空環境。我個人認為這是一個錯誤(這也是我自己不使用 GNOME 終端的原因之一),但我相信開發人員有他們的理由。在啟動一個新選項卡並複制環境之後,它會啟動你的 shell,它會通過其正常的互動式啟動常式,其中包括採購.bashrc

如果您想避免多次添加,您有幾個選擇:

  • 切換到不同的終端仿真器
  • 不要在 中進行修改.bashrc,而是在 中進行修改.bash_profile,這是登錄過程的一部分,而不是互動式啟動,因此不應在新選項卡上使用(但顯然 GNOME 終端可能比我想像的更壞.bash_profile畢竟,它可能仍然以 source 的方式啟動 shell ;自從我上次使用它已經有一段時間了)
  • 檢查 PATH 變數是否已經包含所需的修改,然後再進行修改。

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