2014-02-28 36 views
2

我在Linux Mint系統上,使用bash和zsh作爲shell。我只是手動安裝了Texlive,我希望它能在我的路上。如何更改所有用戶和所有shell的PATH?

我認爲加入下面幾行到.profile會很好,但zsh不加載.profile。

if [ -d "/usr/local/texlive/2013/bin/i386-linux" ] ; then 
    PATH="/usr/local/texlive/2013/bin/i386-linux:$PATH" 
fi 

if [ -d "/usr/local/texlive/2013/bin/x86_64-linux" ] ; then 
    PATH="/usr/local/texlive/2013/bin/x86_64-linux:$PATH" 
fi 

if [ -d "/usr/local/texlive/2013/texmf/doc/man" ] ; then 
    MANPATH="/usr/local/texlive/2013/texmf/doc/man:$MANPATH" 
fi 

if [ -d "/usr/local/texlive/2013/texmf/doc/info" ] ; then 
    INFOPATH="/usr/local/texlive/2013/texmf/doc/info:$INFOPATH" 
fi 

顯然,這一切都提到了「將它添加到.zshrc/.bashrc中」可以是不正確的,因爲這隻會影響到我(只有一個用戶),只有這兩個殼。

(我有我的機器的管理員權限。)

+0

對於'zsh',請參閱'man zsh'中的「STARTUP/SHUTDOWN FILES」部分。 'zsh'有一個很長的,但定義明確的文件序列,它在啓動時讀取。 – chepner

回答

0

您可以更改/etc/profile & /etc/bash_bashrc,那些適用於所有用戶。

+1

好的,但我很確定這不適用於zsh。 –

+0

編輯:我剛剛用'echo $ PATH'試過它。這對'zsh'不起作用。 –

1

ZSH讀取/ etc/zsh/zprofile。所以改變那個文件。

+0

它是'/ etc/zprofile',但是用戶可以通過在他/她的'.zshenv'文件中設置'NO_GLOBAL_RCS'來阻止讀取這個文件。 – chepner

+0

@chepner在debian上(我現在在Debian 7上)基於系統的是/ etc/zsh/zprofile。沒有/ etc/zprofile文件。 –

+0

啊,必須有一個編譯時間選項來指定哪個目錄。你有'/ etc/zsh/zshenv'而不是'/ etc/zshenv'嗎? – chepner

0

bashkshdashsh,並通過閱讀/etc/profile相關sh所有啓動其他炮彈。


zsh,我會建議把變化/etc/zshenv。從好的一面來看,這個文件是保證來源,並從任何交互zsh第一來源。在負面方面,這是保證:),所以不要在這裏花費任何時間。儘管如此,向PATH添加幾個目錄應該不會很耗時。

其他zsh啓動文件中的任何文件都可能被讀取,也可能不被讀取,具體取決於用戶的專用.zshenv文件中的設置,該文件是第二個要提供的文件。


對於csh及其衍生物,/etc/csh.cshrc可能是最好的選擇。

對於我可能錯過的任何shell,您必須查閱他們的文檔。


對於任何外殼,一定要檢查你的系統驗證彈文件的位置上的文檔;它們可能會因shell的編譯方式而有所不同。

+0

我在'/ etc/zsh/zshenv'和'/ etc/zsh/zprofile'和'/ etc/profile'中放置了上面的行(就像我寫的那樣!)。當我輸入任何這些文件的路徑是好的。但是,只要我關閉MATE終端1.6.1,路徑就像以前一樣。你有什麼想法如何解決這個問題? (與bash相同) –

+0

奇怪的是,崇高的文本似乎是正確的... –

+0

只有源文件纔會更改該shell(或其任何子項)的環境。確保您正在編輯的文件是由新shell自動獲取的文件。 – chepner