我的 .bashrc 中有一个部分可以启动 tmux 程序(终端多路复用器)。
但是,如果未安装 tmux 程序(假设我正在设置一台新计算机),那么将其放在我的 .bashrc 文件中将阻止任何终端窗口成功打开。
当然,安装 tmux 可以解决这个问题,但这不是我的问题。
我怎样才能使这个条件成为可能,以便如果 tmux不是安装后它不会崩溃/给出错误消息吗?
目前我有:
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
我想要这样的东西:
if tmux; then
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
fi
但这给了我
The program 'tmux' is currently not installed. You can install it by typing:
sudo apt-get install tmux
虽然它至少给了我一个终端提示而不是关闭窗口!此外,如果/当安装 tmux 时,打开新的终端窗口时不会给出任何错误/导致任何问题。
答案1
您可以使用以下命令type
查看您的机器上是否存在可执行文件:
if [ -n "$(type -P tmux)" ]; then
...tmux is installed...
else
...tmux isn't installed...
fi
我经常使用这个代码片段来做到这一点:
$ [ -n $(type -P tmux) ] && echo "installed" || echo "not installed"
installed
-n
我可以使用(非空字符串)、-z
(空字符串)的替代方案来伪造它。
$ [ -z $(type -P tmux) ] && echo "installed" || echo "not installed"
not installed
答案2
或者,如果您只想决定启动哪个可执行文件,您可以这样做:
executable=$(type -P tmux)
executable=${executable:-xterm} # For example
exec $executable
当且仅当之前没有分配任何内容时,扩展var=${var:-string}
才会将值“string”分配给。var
var