fish shell 登录命令在登录后在屏幕或 tmux 会话中保持 运行

fish shell login commands keep running on screen or tmux session after login

我刚刚切换到 fish-shell

并且我使用了 How do I run a command every login? What's fish's equivalent to .bashrc?

的说明

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

但是现在,如果我打开 screentmux 会话,命令会保持 运行ning !但在我使用默认的 shell 之前,这种情况从未发生过(这意味着命令在登录期间仅 运行 并且从不在 screen 会话中重新 运行)

如何避免这种情况?

提前致谢。

您可以测试 TERM 环境变量,看看您的 shell 在这样的会话中是否是 运行。 screentmux 默认设置为 'screen'.

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

请注意,其他有用的指标是 shell 是 交互式 还是 登录 shell。您可以使用 status --is-interactivestatus --is-login 来检查这两个状态。

在您的具体情况下,检查 登录 shell 可能就是您要查找的内容:

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

有关解释,请参阅 https://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell