如何在不更改$PATH的情况下重新加载.bash_profile?
如何在不更改$PATH的情况下重新加载.bash_profile?
我想找出如何在不退出Bash会话或退出终端的情况下加载对我的.bash_profile
的更改,并且不会影响到我的$PATH
。在新的会话中,这是我的$PATH
:
/Users/MyName/.rbenv/shims:/usr/local/heroku/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/usr/local/go/bin
这是我设置的重新加载.bash_profile
的别名:
alias reload='source ~/.bash_profile'
当我运行reload
命令时,我的.bash_profile
的更改被加载,但每次运行该命令时,我的$PATH
都会变长。
例如:
>> reload >> echo $PATH /Users/MyName/.rbenv/shims:/usr/local/heroku/bin:/usr/local/bin:/Users/MyName/.rbenv/shims:/usr/local/heroku/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/usr/local/go/bin
如你所见,我的$PATH
现在变长了,我认为这是因为以下内容在我的.bash_profile
中:
export PATH="/usr/local/bin:$PATH" export PATH="/usr/local/heroku/bin:$PATH"
如何在每次重新加载时保持我的$PATH
不更新?
问题的原因是在.bash_profile文件中设置了新的PATH变量,但无法重新加载该文件以使更改生效。解决方法是使用source命令重新加载.bash_profile文件,或者在设置新的PATH变量之前先重置PATH变量。
以下是解决方法的整理:
1. 使用source命令重新加载.bash_profile文件:
$ source .bash_profile
2. 在设置新的PATH变量之前先重置PATH变量:
PATH=
PATH=/bin:$PATH
PATH=/usr/bin:$PATH
...
3. 检查.bash_profile文件中的设置是否正确:
export PATH=
export PATH=/bin
export PATH=${PATH}:/sbin
export PATH=${PATH}:/usr/local/bin
export PATH=${PATH}:/usr/sbin
export PATH=${PATH}:/usr/bin
export PATH=${PATH}:/usr/local/opt/go/libexec/bin
4. 确保PATH变量中的组件已正确设置,避免出现"env: bash: No such file or directory"错误提示。
希望以上解决方法对你有帮助。如果需要更多关于.bash_profile文件和设置shell的信息,请参考Bash Guide for Beginners。
如何在不更改$PATH的情况下重新加载.bash_profile?
在重新加载.bash_profile之前,可以检查是否已经存在要插入或追加到$PATH的值:
insert_to_path() { if [[ "$PATH" =~ (^|:)"${1}"(:|$) ]] then return 0 fi export PATH=${1}:$PATH } insert_to_path /usr/local/bin insert_to_path /usr/local/heroku/bin
问题的原因:
重新加载.bash_profile是为了使更改生效,但是在重新加载过程中,可能会更改$PATH的值,从而导致原本存在的路径被删除或重复出现。
解决方法:
为了避免更改$PATH的值,可以在重新加载.bash_profile之前,先检查要插入或追加到$PATH的值是否已经存在。如果已经存在,则不进行任何操作;如果不存在,则将新的路径插入到$PATH的开头,以确保新的路径优先使用。
上述代码中的insert_to_path函数实现了这一逻辑。首先,使用正则表达式检查$PATH中是否已经存在要插入的路径。如果存在,则函数直接返回0,表示路径已存在,不需要进行任何操作。如果不存在,则将新的路径插入到$PATH变量的开头,并导出新的$PATH值。
通过使用这个insert_to_path函数,在重新加载.bash_profile时,可以避免对$PATH进行不必要的更改,从而保持原有的路径设置不变。这样可以确保新的路径被正确地插入到$PATH中,并且不会导致路径的重复出现。