我希望能够重新加载用户.profile,以便“永久”更新PATH而无需重新启动系统。这就是我在.profile文件中所做的事情而且它无法正常工作。
if [[$PATH != "*path_to_directory*"]];then
PATH=<path_to_directory>:$PATH
fi
在我将该添加内容保存到.profile后,我运行源.profile重新加载它,但我只是收到错误而我的PATH没有更新。
答案 0 :(得分:1)
Ubuntu附带了一个名为pathmunge
的便捷实用工具。此实用程序正是您正在尝试执行的操作...它会向您的路径添加一个目录,除非它已经存在。
这是我为OSX编写的重复版本(但应该适用于大多数* nix系统)
function pathmunge() {
if [ "$2" = "force" ] || ! echo $PATH | $(which egrep) -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
export PATH
fi
}
这是您使用它的方式:
# Modify the path
pathmunge /usr/local/bin force
pathmunge /usr/local/sbin force
pathmunge $HOME/.rbenv/bin
pathmunge /usr/local/heroku/bin
pathmunge $HOME/bin after
答案 1 :(得分:1)
您的陈述有2个问题。首先,您需要在[[
之后和]]
之前添加空格。其次,*
应该在引号之外,以匹配字符串:
if [[ $PATH != *"path_to_directory"* ]];then
echo "adding path to directory"
PATH=path_to_directory:$PATH
fi
所以输出将是:
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
$ source .profile
adding path to directory
$ echo $PATH
path_to_directory:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
$ source .profile
$ echo $PATH
path_to_directory:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin