当前位置: 技术问答>linux和unix
请叫下环境变量重复设置的问题
来源: 互联网 发布时间:2016-05-17
本文导语: 把下面的脚本保存在一个shell里面,运行一次没有问题,但是运行两次的话,$DSAGENT_HOME/bin会加上两次,因为第二次path里面已经有了$DSAGENT_HOME/bin,再加上前面一次的。 这样如果多次运行的话,虽然功能是好的,但是pat...
把下面的脚本保存在一个shell里面,运行一次没有问题,但是运行两次的话,$DSAGENT_HOME/bin会加上两次,因为第二次path里面已经有了$DSAGENT_HOME/bin,再加上前面一次的。
这样如果多次运行的话,虽然功能是好的,但是path会有很大的冗余,不确定会不会对效率产生什么坏处。请高人明示。
请教:有没有那种写法,既能把已有的path加上这次的,又不重复变。非常感谢
PATH=$DSAGENT_HOME/bin:$PATH
这样如果多次运行的话,虽然功能是好的,但是path会有很大的冗余,不确定会不会对效率产生什么坏处。请高人明示。
请教:有没有那种写法,既能把已有的path加上这次的,又不重复变。非常感谢
PATH=$DSAGENT_HOME/bin:$PATH
|
那就自己在添加新路径前判断一下PATH是否已经包含了需要添加的路径,比如:
echo $PATH | grep “$DSAGENT_HOME” || PATH=$DSAGENT_HOME:$PATH
echo $PATH | grep “$DSAGENT_HOME” || PATH=$DSAGENT_HOME:$PATH
|
modify your .bash_profile, add the path:)
|
当然会,1) path用来搜索可执行文件的路径。如果你重复包含一个path,意味着 如果在此之前没有找到文件的话 ,他会重复搜索你的path。效率当然会受到影响。
2) 要解决这个问题,一般在用户登录时,设置其path就ok了。当然你可以写一个脚本,只运行一次来设置路径。
2) 要解决这个问题,一般在用户登录时,设置其path就ok了。当然你可以写一个脚本,只运行一次来设置路径。
|
通常情况下,
用户登录系统时,bash首先执行/etc/profile配置文件和/etc/profile.d/目录下的配置文件,这些配置文件对系统的所有用户都有效,它们设置了普遍性的环境变量.然后,bash会执行登录用户主目录下的.bashrc和.bash_profile文件,
通过这两个配置文件设置用户个性化的环境变量,并且可以重复设置前面配置文件中设置的选项,覆盖它们的设置值.用户主目录下面的.bashrc文件会执行/etc /bashrc文件来完成环境变量的设置.
用户主目录下的.bash_profile设置为每次登录时执行,而.bashrc则被设置为在每次打开新的终端时执行,即打开新的终端而不需要重新,接受初始登录环境变量.
如果用户需要添加或修改某个环境变量,使其每次登录时都会存在和具有用户指定的值,则需要修改该用户主目录下的.bashrc文件.但是以其它用户身份登录后,则不会有这个环境变量的存在,这是因为,在上面修改的仅仅是前面用户私有的shell环境配置文件.如果需要使这个环境变量的修改对所有的用户都有效,只需要以root的身份修改/etc/profile文件.
PATH变量决定了shell将到哪些目录中寻找命令或程序.如果要执行的命令的目录在$PATH中,用户就不必输入这个命令的完整路径,直接输入命令就可以了(如果有".路径"可执行文件也可以直接执行,而不需要在其前面加./了.可以这样设置:
1、在/etc/profile末添加PATH=$PATH:.
export PATH
2、。 /etc/profile).
用户登录系统时,bash首先执行/etc/profile配置文件和/etc/profile.d/目录下的配置文件,这些配置文件对系统的所有用户都有效,它们设置了普遍性的环境变量.然后,bash会执行登录用户主目录下的.bashrc和.bash_profile文件,
通过这两个配置文件设置用户个性化的环境变量,并且可以重复设置前面配置文件中设置的选项,覆盖它们的设置值.用户主目录下面的.bashrc文件会执行/etc /bashrc文件来完成环境变量的设置.
用户主目录下的.bash_profile设置为每次登录时执行,而.bashrc则被设置为在每次打开新的终端时执行,即打开新的终端而不需要重新,接受初始登录环境变量.
如果用户需要添加或修改某个环境变量,使其每次登录时都会存在和具有用户指定的值,则需要修改该用户主目录下的.bashrc文件.但是以其它用户身份登录后,则不会有这个环境变量的存在,这是因为,在上面修改的仅仅是前面用户私有的shell环境配置文件.如果需要使这个环境变量的修改对所有的用户都有效,只需要以root的身份修改/etc/profile文件.
PATH变量决定了shell将到哪些目录中寻找命令或程序.如果要执行的命令的目录在$PATH中,用户就不必输入这个命令的完整路径,直接输入命令就可以了(如果有".路径"可执行文件也可以直接执行,而不需要在其前面加./了.可以这样设置:
1、在/etc/profile末添加PATH=$PATH:.
export PATH
2、。 /etc/profile).
|
另外一个可能的影响就是:PATH是一个系统变量,它的值长度是有限制的,所以当过长时就会出现问题,具体允许的长度自己去查找一下吧。