防止 TMUX 在 intellij 终端中启动

Prevent TMUX from starting in intellij terminal

所以我有以下片段:

if [[ ps -p$PPID | grep 'java' == '' ]]; then
    ZSH_TMUX_AUTOSTART=true;
fi

其中returns出现以下错误:

/home/otis/.zshrc:8: parse error: condition expected: ps

想法是,如果 ps -p$PPID | grep 'java' returns 什么都没有,则设置 ZSH_TMUX_AUTOSTART=true

我想这样做的原因是我想在我的 gnome 终端中自动启动 tmux 而不是在我的 intellij 终端中如果我 运行 这个命令在 gnome 中它 returns 什么都没有,如果我 运行 来自 intellij 它 returns java.

所以逻辑基本上是可靠的,如果没有任何返回总是启动 tmux,但我不擅长 shell 所以任何帮助将不胜感激。

干杯。

您收到错误消息的原因是条件表达式 ([[ … ]]) 在 ps 之后需要一个条件,它需要一个字符串而不是一个命令。您必须将命令包装在 $(…) 中才能在条件表达式中使用其输出。或者,您可以只使用 grep 的退出代码来确定是否找到 "java",这样就不需要条件表达式了。

if ! ps -p $PPID | grep -q java; then
    ZSH_TMUX_AUTOSTART=true;
fi

请注意,检查的 return 值与您最初的预期相反。因此,如果退出代码为 false,则 ! 变为 return true,反之亦然。 -q 只是抑制 grep.

的输出

我意识到这是一个旧线程,TERMINAL_EMULATOR 变量在原始 post 时可能不一样,但我在 OSX 上用以下方法解决了这个问题:

if [ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm"]
then 
   ZSH_TMUX_AUTOSTART=true
fi

在您的项目中,在“设置”>“工具”>“终端”下,将环境变量设置为 INSIDE_EMACS=true