4

我想在注销 / 登录时重置 shell,从头开始重新加载别名、函数。

但不要谈论source ~/.bashrc也不. ~/.bashrc

为什么 ?因为source或者.只是用新的函数、别名等等来丰富当前的 shell。


仅供参考,您可以将此功能放在您的 bashrc 中:

function foo {
  echo "foo";
}

然后做source ~/.bashrcor . ~/.bashrc。是的,foo正在工作。然后现在,编辑您的,并将foo.bashrc替换为bar,以获得:

function bar {
  echo "bar";
}

您现在可以键入 foo,并看到函数 foo 仍在工作,尽管文件中不再存在它.bashrc。这就是我想说明的一点。


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

4

2 回答 2

7

如OP所愿

bash --login 

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

于 2013-03-05T13:50:05.850 回答
1

编写以下脚本:

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

设置可执行位并将其设置为您的外壳。然后在你的添加一个别名~/.bashrc

alias resetterm="exit 123"

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

于 2013-03-05T13:55:15.660 回答