如果我对 .bashrc 进行了更改,如何在不注销并重新登录的情况下重新加载?
.bashrc
有了这个,你 won't 甚至必须输入"source ~/.bashrc":
Include your bashrc file:
alias rc="vim ~/.bashrc && source ~/.bashrc"
每次要编辑bashrc时,只需运行别名“ rc ”
要 complement and contrast 这两个最受欢迎的答案,. ~/.bashrc和exec bash:
两种解决方案都有效地重新加载 ~/.bashrc ,但存在差异:
~/.bashrc
. ~/.bashrc 或 source ~/.bashrc 将 preserve your current shell :
. ~/.bashrc
source ~/.bashrc
除了将 ~/.bashrc 重新加载到当前shell(sourcing)中的修改, the current shell and its state are preserved ,其中包括环境变量,shell变量,shell选项,shell函数和命令历史记录 .
exec bash ,或者更健壮的 exec "$BASH" [1],将 replace your current shell 带有一个新实例,因此 only preserve your current shell's environment variables (包括你自己定义的那些) .
exec bash
exec "$BASH"
换句话说:在shell变量,shell函数,shell选项,命令历史记录方面,对当前shell的任何临时更改都将丢失 .
根据您的需要,可能首选一种或另一种方法 .
[1] exec bash理论上可以执行与启动当前shell的bash可执行文件不同的bash可执行文件,如果它碰巧存在于$ PATH中前面列出的目录中 . 由于特殊变量$ BASH始终包含启动当前shell的可执行文件的完整路径,因此exec“$ BASH”保证使用相同的可执行文件 . $ BASH附近的注释:“双引号”确保变量值按原样使用,而不用Bash解释;如果值没有嵌入空格或其他shell元字符(在这种情况下不太可能),则不需要双引号,但使用它们是一种很好的习惯 .
我在msysgit上使用以下命令
更短的版本
对我来说,当我改变PATH时有用的是: exec "$BASH" --login
exec "$BASH" --login
或者你可以使用;
做同样的事情 . (更容易记住,至少对我而言)
exec 命令用给定程序替换shell,在我们的示例中,它用bash替换我们的shell(使用更新的配置文件)
我注意到纯 exec bash 命令将保留环境变量,因此您需要使用 exec -c bash 在空的环境中运行bash .
exec -c bash
例如,您登录bash, export A=1 ,如果您 exec bash , A == 1 .
export A=1
A == 1
如果你 exec -cl bash , A 是空的 .
exec -cl bash
A
我认为这是完成工作的最佳方式 .
我使用easyengine来设置我的基于漏洞 Cloud 的服务器 .我在 /etc/bash.bashrc 找到了我的bash文件 .
/etc/bash.bashrc
所以 source /etc/bash.bashrc 为我做了诀窍!
source /etc/bash.bashrc
update
设置裸服务器(ubuntu 16.04)时,如果尚未设置用户名,则可以使用上述信息,并通过root登录 .
最好创建一个用户(使用sudo privledges),然后以此用户名登录 .这将为您的设置创建一个目录,包括.profile和.bashrc文件 .https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/
现在,您将编辑和(和"source") ~/.bashrc 文件 .
在我的服务器上,这位于 /home/your_username/.bashrc(其中 your_username 实际上是您在上面创建的新用户名,现在登录)
/home/your_username/.bashrc
your_username
假设一个交互式shell,你想保留当前的命令历史记录并加载/ etc / profile(加载环境数据,包括/ etc / bashrc,在Mac OS X上加载/etc/paths.d/中定义的路径) path_helper),附加命令历史记录并使用login('-l')选项执行bash的exec:
history -a && exec bash -l
我个人有
alias ..='source ~/.bashrc'
在我的bashrc中,所以我可以使用“..”重新加载它 .
您只需输入命令:
或者您可以使用命令的较短版本:
类型:
source .bashrc
根据您的环境,只需输入
bash
也可以工作 .
有人编辑我的答案添加错误的英语,但这是原始的,这不如接受的答案 .
. .bashrc
根据您的环境,您可能希望添加脚本以在打开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中的所有路径/脚本 .
这也有效..
cd ~ source .bashrc
. 是POSIX强制内置的
source是dot / period的同义词 . 在bash中,但不在POSIX中,所以为了获得最大的兼容性,请使用句点 .
exec命令用给定的程序替换shell ... - WhoSayIn
16 回答
有了这个,你 won't 甚至必须输入"source ~/.bashrc":
Include your bashrc file:
每次要编辑bashrc时,只需运行别名“ rc ”
要 complement and contrast 这两个最受欢迎的答案,. ~/.bashrc和exec bash:
两种解决方案都有效地重新加载
~/.bashrc
,但存在差异:. ~/.bashrc
或source ~/.bashrc
将 preserve your current shell :除了将
~/.bashrc
重新加载到当前shell(sourcing)中的修改, the current shell and its state are preserved ,其中包括环境变量,shell变量,shell选项,shell函数和命令历史记录 .exec bash
,或者更健壮的exec "$BASH"
[1],将 replace your current shell 带有一个新实例,因此 only preserve your current shell's environment variables (包括你自己定义的那些) .换句话说:在shell变量,shell函数,shell选项,命令历史记录方面,对当前shell的任何临时更改都将丢失 .
根据您的需要,可能首选一种或另一种方法 .
[1] exec bash理论上可以执行与启动当前shell的bash可执行文件不同的bash可执行文件,如果它碰巧存在于$ PATH中前面列出的目录中 . 由于特殊变量$ BASH始终包含启动当前shell的可执行文件的完整路径,因此exec“$ BASH”保证使用相同的可执行文件 . $ BASH附近的注释:“双引号”确保变量值按原样使用,而不用Bash解释;如果值没有嵌入空格或其他shell元字符(在这种情况下不太可能),则不需要双引号,但使用它们是一种很好的习惯 .
我在msysgit上使用以下命令
更短的版本
对我来说,当我改变PATH时有用的是:
exec "$BASH" --login
或者你可以使用;
做同样的事情 . (更容易记住,至少对我而言)
exec 命令用给定程序替换shell,在我们的示例中,它用bash替换我们的shell(使用更新的配置文件)
我注意到纯
exec bash
命令将保留环境变量,因此您需要使用exec -c bash
在空的环境中运行bash .例如,您登录bash,
export A=1
,如果您exec bash
,A == 1
.如果你
exec -cl bash
,A
是空的 .我认为这是完成工作的最佳方式 .
我使用easyengine来设置我的基于漏洞 Cloud 的服务器 .
我在
/etc/bash.bashrc
找到了我的bash文件 .所以
source /etc/bash.bashrc
为我做了诀窍!update
设置裸服务器(ubuntu 16.04)时,如果尚未设置用户名,则可以使用上述信息,并通过root登录 .
最好创建一个用户(使用sudo privledges),然后以此用户名登录 .
这将为您的设置创建一个目录,包括.profile和.bashrc文件 .
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/
现在,您将编辑和(和"source")
~/.bashrc
文件 .在我的服务器上,这位于
/home/your_username/.bashrc
(其中
your_username
实际上是您在上面创建的新用户名,现在登录)假设一个交互式shell,你想保留当前的命令历史记录并加载/ etc / profile(加载环境数据,包括/ etc / bashrc,在Mac OS X上加载/etc/paths.d/中定义的路径) path_helper),附加命令历史记录并使用login('-l')选项执行bash的exec:
我个人有
alias ..='source ~/.bashrc'
在我的bashrc中,所以我可以使用“..”重新加载它 .
您只需输入命令:
或者您可以使用命令的较短版本:
类型:
根据您的环境,只需输入
也可以工作 .
有人编辑我的答案添加错误的英语,但这是原始的,这不如接受的答案 .
根据您的环境,您可能希望添加脚本以在打开SSH会话时自动加载.bashrc . 我最近迁移到运行Ubuntu的服务器,默认情况下加载.profile,而不是.bashrc或.bash_profile . 要在.bashrc中运行任何脚本,我必须在每次打开会话时运行
source ~/.bashrc
,这在运行远程部署时无效 .要在打开会话时自动加载.bashrc,请尝试将其添加到.profile:
重新打开会话,它应该加载.bashrc中的所有路径/脚本 .
这也有效..
替代品