我想重置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,而旧的进程将结束。