我试图找出如何加载我的更改,.bash_profile而不必注销我的Bash会话或退出终端,也不会影响我的$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
Run Code Online (Sandbox Code Playgroud)
这是我设置重新加载我的别名.bash_profile:
alias reload='source ~/.bash_profile'
Run Code Online (Sandbox Code Playgroud)
当我运行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
Run Code Online (Sandbox Code Playgroud)
你可以看到我$PATH现在更长了,我认为这是因为以下是我的.bash_profile:
export PATH="/usr/local/bin:$PATH"
export PATH="/usr/local/heroku/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
如何防止$PATH每次重新加载时更新?
好的,第一招:你重新加载像.bash_profile这样的脚本
$ source .bash_profile
Run Code Online (Sandbox Code Playgroud)
内置源读取shell脚本,就好像它来自标准输入,而不是分支子shell.
诀窍二:那个任务
PATH=/my/new/path:$PATH
Run Code Online (Sandbox Code Playgroud)
只是将已经存在于PATH中的内容附加到新字符串中.所以,这就像做
PATH=/my/new/path:my/old/path/:/my/even/older/path
Run Code Online (Sandbox Code Playgroud)
你不喜欢这种行为,你只需要先重置PATH.我做的是这样的:
PATH=
PATH=/bin:$PATH
PATH=/usr/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
等等.现在路径将完全符合您的期望.
更新
这正是我的文件的样子:
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
Run Code Online (Sandbox Code Playgroud)
该exports不是真的很重要,因为PATH已经是出口的,他们只是我被挑剔.
你还可以看一下我的设置shell的其余部分的答案:关于.bash_profile,.bashrc,以及应该在哪里编写别名?
你应该看看Bash初学者指南,那里有很多有用的东西.
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |