重置/重新加载bash,完全(别名和功能)



我想重置shell, 当我退出/登录时,重新加载别名,函数,从头开始。

但是不要谈论source ~/.bashrc. ~/.bashrc !

为什么?因为source.只是丰富了当前的外壳,增加了新的函数、别名等。


供参考,你可以把这个函数放在你的bashrc:

function foo {
  echo "foo";
}

然后执行source ~/.bashrc. ~/.bashrc。是的,foo正在工作。然后,编辑.bashrc,并将foo替换为bar,得到:

function bar {
  echo "bar";
}

您现在可以键入foo,并看到函数foo仍然工作,尽管它不再存在于.bashrc文件中。这就是我想要展示的。


我尝试了exec bash;,但它没有加载.bashrc文件。exec bash;source ~/.bashrc;显然不起作用,因为exec杀死当前进程(source从未被调用)。

作为OP wish

bash --login 

注意:如果您在终端(xterm或类似的)中运行bash,您还需要向终端提供-ls参数(或同等参数)。(例如xterm -ls)

编写以下脚本:

while true; do
    bash
    if [ $? -ne 123 ]; then
        break
    fi
done

设置可执行位并将其设置为您的shell。然后在~/.bashrc中添加别名:

alias resetterm="exit 123"

这只需要一个额外的bash进程一直运行。每次重置时,都将运行一个新的bash,而旧的进程将结束。

最新更新