linux:如何永久和全局地改变环境variables

我想为每一个login到我的linux的用户做以下的事情:

export PATH=$PATH:~/.path 

我不知道怎么做,除了在每个〜/ .bashrc文件中手动添加这行。

此外,我的一个cron工作运行一个程序,我想(为该cronjob)PYTHONPATH设置为特定的东西。 任何.bashrc文件会影响cronjob的环境吗? 我如何改变一个cronjob的环境。

此外,我现在好奇如何改变什么PATHvariables启动。 其他程序似乎在安装时会这样做,那么我该如何去做呢?

shell的环境

从本质上讲,运行进程的任何东西都会在启动时读取configuration文件,并影响环境,您需要点击configuration文件。

对于用户shell来说,“明显”的地方是.profile.bashrc.bash_profile (我想),也许还有一些我不记得的东西。 显然,如果你使用zshcshtcsh或者其他任何东西作为shell的话,还有更多其他的。

您的窗口环境可以读取初始化文件,可能是KDE或Gnome。 您在底下运行的特定窗口pipe理器也可能读取configuration文件。 我承认,即使对于我自己的安装,我也不知道这些文件的名称。

最后,通常在/etc所有环境中都有“主”configuration文件。 它们为用户不需要的东西提供默认值。

我认为自己安装的程序会认真检查各种可能性。 各种Linux发行版可能会为此提供一些辅助脚本。

cron的

这一个是更容易。 出于安全原因, cron只会将一些环境variables传递给subprocess。 我认为USER是其中之一,而MAILTO则是其中之一。 据我所知,没有PATH设置 – 这经常会使新手感到烦恼。 cron作业的环境与shell环境完全不同! 在环境中你想要的东西,你要么通过crontab的命令行,要么启动一个脚本,让它设置它所需要的任何环境。

要将bashrc更改应用于所有用户,可以修改/etc/bash.bashrc (这是针对Ubuntu的)。

另外,如上面的答案所示,确保这个文件来自/etc/profile