我想知道如何自动设置linux OS提供的标准环境变量,如PATH,HOME。这些文件是从哪个文件中读取的。当特定用户登录时,应该有一些文件可以从中设置这些变量。
答案 0 :(得分:6)
我想了解@cnicutar已经提到过的更多细节
包括PATH
在内的环境变量可以是
/etc/profile
适用于Bourne&amp ;;的系统设置。 Bourne兼容的shell。 /etc/profile
的行为可能因分布而异
对于最新的Ubuntu发行版,建议使用/etc/environment
进行系统范围的设置(不推荐使用/etc/profile
或/etc/bash.bashrc
,如{{1}中所述3}})
在Ubuntu机器上,/etc/profile
是一个shell脚本,它在/etc/profile.d
& bashrc
中的系统范围/etc/bash.bashrc
文件,而/etc/environment
是一个文本文件,由每行的变量赋值组成,设置在系统范围的环境中。
对于每个用户,包括PATH
(对于shell)的环境变量的值也可以通过~/.profile
,~/.bash_profile
,~./bash_login
& ~/.bashrc
(~
=>用户的主目录)
有关Ubuntu系统上环境变量的更多详细信息,请参阅以下链接:Ubuntu help link
希望这有帮助!
答案 1 :(得分:4)
关于它们并没有什么神奇之处,它会在启动时设置它们。
你应该开始阅读/etc/profile
并从那里开始工作。或者,strace
可能会显示shell在启动时尝试读取的文件。
例如,以下是/etc/profile
开始的方式:
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
export PATH
之后是其他文件的来源,而这些文件又会修改PATH
。
答案 2 :(得分:0)
您甚至可以使用模块环境软件http://en.wikipedia.org/wiki/Environment_Modules_(software)自行设置和管理环境变量。 要安装"模块" ,您可以将此命令用于Centos
sudo yum install environment-modules
对于Ubuntu用户,您可以从源代码安装它: http://modules.sourceforge.net/
编写模块文件以设置或预置环境变量。然后你模块加载这个文件。 例如,我的文件名为" mypath"
proc ModulesHelp { } {
global version prefix
puts stderr "\t Loads the environment for my installed home folder HOME/local"
}
module-whatis "Loads the environment for my installed home folder HOME/local"
set HOME /home/svu/a0081742
prepend-path PATH $HOME/local/bin
prepend-path LIBRARY_PATH $HOME/local/lib
prepend-path LD_LIBRARY_PATH $HOME/local/lib
prepend-path LD_INCLUDE_PATH $HOME/local/include
prepend-path MANPATH $HOME/local/share/man
然后,使用
加载文件module load mypath
您可以使用
列出已加载的模块module list