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
但是现在,如果我打开 screen
或 tmux
会话,命令会保持 运行ning !但在我使用默认的 shell 之前,这种情况从未发生过(这意味着命令在登录期间仅 运行 并且从不在 screen
会话中重新 运行)
如何避免这种情况?
提前致谢。
您可以测试 TERM
环境变量,看看您的 shell 在这样的会话中是否是 运行。 screen
和 tmux
默认设置为 'screen'.
if not string match --quiet -e $TERM 'screen'
<your startup scripts>
end
请注意,其他有用的指标是 shell 是 交互式 还是 登录 shell。您可以使用 status --is-interactive
和 status --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。
我刚刚切换到 fish-shell
并且我使用了 How do I run a command every login? What's fish's equivalent to .bashrc?
的说明这意味着我已经将登录时我喜欢 运行 的命令从 .bashrc
移动到 ~/.config/fish/config.fish
但是现在,如果我打开 screen
或 tmux
会话,命令会保持 运行ning !但在我使用默认的 shell 之前,这种情况从未发生过(这意味着命令在登录期间仅 运行 并且从不在 screen
会话中重新 运行)
如何避免这种情况?
提前致谢。
您可以测试 TERM
环境变量,看看您的 shell 在这样的会话中是否是 运行。 screen
和 tmux
默认设置为 'screen'.
if not string match --quiet -e $TERM 'screen'
<your startup scripts>
end
请注意,其他有用的指标是 shell 是 交互式 还是 登录 shell。您可以使用 status --is-interactive
和 status --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。