我有一个'安装'为.bashrc添加别名的脚本(例如)。
我希望更改在运行脚本后立即生效(就像我在运行脚本后手动执行:source .bashrc
)。
示例脚本install.sh
#!/bin/bash
# Do other stuff ...
echo "alias myalias='echo hello'" >> /root/.bashrc
答案 0 :(得分:2)
来自man bash
,SHELL BUILTIN命令部分:
source filename [arguments]
在当前shell环境中从filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态。如果filename不包含斜杠,则使用PATH中的文件名来查找包含filename的目录。在PATH中搜索的文件不需要是可执行的。 [...]
你要么......
source ~/.bashrc
,或 的流程中的 install.sh
source ~/.bashrc
中有一个install.sh
,和使用source install.sh
调用它。
只要你有"只是"称为install.sh
,它产生了一个新的shell进程,而install.sh
所做的一切只会影响 进程,而不会影响当前的shell进程。这是shell的安全功能。如果您希望脚本影响当前进程,则必须明确授予其权限(通过source
)。