如何强制调用脚本的 shell 从.bashrc
脚本内部重新加载?
我正在尝试编写一个“新盒子”脚本,按照我喜欢的方式设置所有内容。除了重新加载之外,一切都正常.bashrc
。
我知道我可以“只”做. ~/.bashrc
或exec bash
任何其他方式来应用更改后运行脚本。但这有点违背了一键修复的目的,而且走到这一步却在最后一步被搞砸了,这让我很抓狂哈哈
我尝试将所有source ~./bashrc
exec bash
内容添加到脚本中,但没有任何效果,因为它只是为脚本的环境重新加载,而不是为调用 shell
我还很新手,所以这可能是非常明显的事情,这可以解释为什么我无法通过 googlefu 找到答案>.<
任何帮助将非常感激。
答案1
这可能不适用于所有情况。也可能做了一些我不应该做的事情……但就我的目的而言,它完成了工作。
因为script.sh
如果我通过. script.sh
而不是来调用它bash script.sh
,一切似乎都会运行并相应地更新。
耶!
答案2
我知道这听起来很傻,我也是新手,但是如果您直接从脚本中导出所需的环境,然后将它们添加到 .bashrc 以供以后使用,该怎么办?
假设检查环境变量是否存在并加载它:
### MySQL
if [ -z "$MYSQL_HOME" ]; then
export MYSQL_HOME="/usr/local/mysql"
export PATH="$MYSQL_HOME/bin:$PATH"
fi
然后将这段代码复制到.bashrc...
编辑
我偶然发现了这一点 更新脚本的 ~/.bashrc 文件