如果我对.bashrc进行了更改,如何在不注销并重新登录的情况下重新加载它?
当前回答
我编写了一组名为bash_magic的脚本,这些脚本可以跨多个shell自动执行此过程。如果您更新bashmagicshell目录(默认情况下为.bash.d)中的shell文件,它将在下一个提示下自动源代码更新。因此,一旦您进行了更改,只需按Enter键/回车键,任何更新都将被获取。
其他回答
这也会奏效。。
cd ~
source .bashrc
有人编辑了我的答案,添加了不正确的英语,但这是原文,比公认的答案差。
. .bashrc
假设是一个交互式shell,并且您希望保留当前的命令历史记录并加载/etc/profile(它加载环境数据,包括/etc/bashrc,在Mac OS X上,通过path_helper加载/etc/paths.d/中定义的路径),附加命令历史记录,并使用login('-l')选项执行bash:
history -a && exec bash -l
根据您的环境,您可能希望添加脚本,以便在打开SSH会话时自动加载.bashrc。我最近迁移到了运行Ubuntu的服务器,默认情况下加载的是.profile,而不是.bashrc或.bash_profile。要在.bashrc中运行任何脚本,我必须在每次打开会话时运行source~/.bashrc,这对运行远程部署没有帮助。
要在打开会话时自动加载.bashrc,请尝试将其添加到.profile:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
重新打开会话,它将加载.bashrc中的所有路径/脚本。
或者您可以使用:
exec bash
这样做也是一样的,而且更容易记住(至少对我来说)。
exec命令通过运行指定的命令行完全替换shell进程。在我们的示例中,它用一个新的bash实例(用更新的配置文件)替换当前的shell。
推荐文章
- 安装tzdata非交互式
- 如何从终端/命令行调用VS代码编辑器
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 在Bash中检查变量是否存在于列表中
- 查看PS命令的全部输出
- 确保一次只运行一个shell脚本实例的快速方法
- 如何在Windows命令提示符下运行.sh ?
- “你有邮件”的消息在终端,os X
- 如何从命令行将每两行合并为一行?
- 如何复制在bash所有目录和文件递归?
- 在Bash命令提示符上添加git分支
- 匹配前后的Grep字符?
- 如何在Makefile中设置子进程的环境变量
- 带有多个条件的Bash if语句将抛出错误
- 如何让“wc -l”打印没有文件名的行数?