2014-02-28 35 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