bash - 如何在不更改 $PATH 的情况下重新加载 .bash_profile?

标签 bash unix path

我想知道如何在不注销我的 Bash session 或退出终端的情况下加载对我的 .bash_profile 的更改,也不影响我的 $PATH.

在新 session 中,这是我的$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 重新加载脚本

$ source .bash_profile

源内置读取 shell 脚本,就好像它来自标准输入,而不是 fork 子 shell。

技巧二:作业

PATH=/my/new/path:$PATH

只是将 PATH 中已有的内容附加到新字符串中。所以,这就像做

PATH=/my/new/path:my/old/path/:/my/even/older/path

您不喜欢这种行为,您只需先重置 PATH 即可。我的做法是这样的:

PATH=
PATH=/bin:$PATH
PATH=/usr/bin:$PATH

等等。现在路径将完全符合您的预期。

更新

这就是我的文件的样子:

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

exports 并不是很重要,因为 PATH 已经导出,它们只是我太挑剔了。

您还可以查看此答案以了解我如何设置我的 shell 的其余部分:About .bash_profile, .bashrc, and where should alias be written in?

你应该看看 Bash Guide for Beginners ,那里有很多有用的东西。

关于bash - 如何在不更改 $PATH 的情况下重新加载 .bash_profile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140624/

相关文章:

multithreading - BASH脚本中的多线程ping

mysql - 如何 grep 多行模式

linux - ThoughtWorks GO 添加管道 - 未能在 PATH 中找到 GIT

regex - 如何删除文本文件中第一个空格后每一行中的所有字符?

sql - 脚本备份网站及其数据库

c - 自毁过程 Unix C

unix - 当第一个子进程退出,然后父进程退出而不调用 wait 时会发生什么?

linux - 将 ( cd/&& ls ) 命令作为变量传递给 bash 脚本

powershell - 如何在 PowerShell 中标准化路径?

php - 使用 php 从字符串中查找文件名