防止TMUX在intellij终端启动

时间:2016-04-04 01:05:05

标签: shell intellij-idea zsh tmux

所以我有以下代码段:

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

返回以下错误:

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

我们的想法是,如果ps -p$PPID | grep 'java'没有返回任何内容,请设置ZSH_TMUX_AUTOSTART=true

我想要这样做的原因是我想在我的gnome-terminal中自动启动tmux而不是在我的intellij终端中如果我在gnome中运行此命令它什么都不返回,如果我从intellij运行它会返回{{1} }。

所以逻辑基本上是稳固的,如果没有返回总是启动tmux,但我不擅长shell,所以任何帮助都会非常感激。

干杯。

3 个答案:

答案 0 :(得分:4)

您收到错误消息的原因是条件表达式([[ … ]])期望ps之后的条件,而字符串而不是命令。您必须将命令包装在$(…)中以在条件表达式中使用其输出。或者,您可以使用grep的退出代码来确定" java"已被发现,这消除了对条件表达式的需要。

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

请注意,支票的返回值与您最初的预期相反。因此,!如果退出代码为true则返回false,反之亦然。 -q只会抑制grep的输出。

答案 1 :(得分:1)

我意识到这是一个旧线程,而TERMINAL_EMULATOR变量在原始帖子发布时可能并不相同,但是我在OSX上使用以下方法解决了这个问题:

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

答案 2 :(得分:1)

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