环境变量相关的文件主要就是下面几个(按照执行顺序列出):/etc/profile、/etc/profile.d(文件夹)、~/.bash_profile、~/.bashrc、/etc/bashrc
在文件/etc/profile中给出的官方头为
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
意思是说这个文件主要为环境变量和登录操作而准备,如果想增加登录函数与函数别名,请到/etc/bashrc文件中
如果想增加环境变量的话,尽量不要更改此文件,建议在/etc/profile.d文件夹中增加。
首先新建一个文本,内容为:export 变量名=变量体
一般有root权限会在这里增加环境变量,这样所有的用户就都可以使用这些环境变量
在/.bash_profile文件中说明为
# User specific environment and startup programs
意思为此文件是用户定义的环境和启动程序所在,一般如果没有root权限,都会在这个文件中增加相应的环境变量,但是问题就是只有这个用户能够使用该环境变量。
注意0:在更改环境变量文件后注意刷新
使用“source 文件名”命令进行创新,source也可以使用"."代替。
注意1:su 和su -
su:只是切换到了root用户,但是环境变量还是普通用户的
su -:环境变量与工作目录同时切换到root用户
注意2:对于某些程序,特别是使用原始套接字raw socket的程序,只有使用root权限才能正确执行。
但是对于ping来说,任何一个用户都能够使用,是因为ping的拥有者与属组都是root,同时ping文件具有s属性,也就是执行时能够以所有者root的身份去执行。
增加s属性命令:chmod u+s test
改变拥有者与属组:chown root:root test
注意3:对于智能以root身份运行的程序,特别是使用第三方库的程序,有时会出现找不到库的提示,即使查看env环境变量LD_LIBRARY_PATH属性中相应的库路径也是存在的,此情况机理未知,但是已经有解决方案。
Linux在寻找动态库时的默认路径顺序为/lib和/usr/lib,然后如果存在LD_LIBRARY_PATH环境变量也会自动搜索此变量。
我们可以指定系统的动态库路径,首选的是增加LD_LIBRARY_PATH变量,如果此变量没有作用,可以选择在 /etc/ld.so.conf.d文件夹下新建库路径文件来增加搜索路径。
系统执行的虽然是/etc/ld.so.conf文件,但是在该文件中只包含了一句话include ld.so.conf.d/*.conf,所以我们只需要在/etc/ld.so.conf.d文件夹下创建相应的路径配置文件即可。
在配置完毕后一定要使用ldconfig进行缓存的刷新。