我希望能夠重新加載用戶.profile,以便「永久」更新PATH而不必重新啓動系統。這正是我在.profile文件中所做的,並且不起作用。如何檢查PATH是否已包含特定目錄
if [[$PATH != "*path_to_directory*"]];then
PATH=<path_to_directory>:$PATH
fi
後,我保存除了.profile文件,我運行源.profile文件重新加載它,但我只是得到一個錯誤,我的道路不會被更新。
我希望能夠重新加載用戶.profile,以便「永久」更新PATH而不必重新啓動系統。這正是我在.profile文件中所做的,並且不起作用。如何檢查PATH是否已包含特定目錄
if [[$PATH != "*path_to_directory*"]];then
PATH=<path_to_directory>:$PATH
fi
後,我保存除了.profile文件,我運行源.profile文件重新加載它,但我只是得到一個錯誤,我的道路不會被更新。
你有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
我是新來的腳本,我沒有意識到這些空間實際上很重要! –
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
而你得到了什麼錯誤 – Kevin