鱼壳登录命令在登录后继续在屏幕或tmux会话上运行

我刚刚切换到fish-shell

我已经按照 How do I run a command every login? What's fish's equivalent to .bashrc?

的说明进行了操作

这意味着我已经将登录时希望运行的命令从.bashrc移到了~/.config/fish/config.fish

但是现在,如果我打开screentmux会话,命令将继续运行!但在我使用默认外壳程序之前,从未发生过(只是命令仅在登录期间运行,而从未在screen会话中重新运行)

如何避免这种情况?

谢谢。

flb1492 回答:鱼壳登录命令在登录后继续在屏幕或tmux会话上运行

您可以测试TERM环境变量,以查看您的shell是否在这样的会话中运行。 screentmux都默认设置为“屏幕”。

if not string match --quiet -e $TERM 'screen'
    <your startup scripts>
end

请注意,其他有用的指标是外壳是 interactive 还是 login shell 。您可以使用status --is-interactivestatus --is-login来检查这两种状态。

在您的特定情况下,您可能需要检查登录外壳

if status --is-login
    <your startup scripts>
end

有关说明,请参见https://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell

本文链接:https://www.f2er.com/2829617.html

大家都在问