如何抑制 zsh 中的别名错误?

如何抑制 zsh 中的别名错误?

我想要一个别名列表,将其源到我所有计算机上的 .zshrc 并同步。但在一台计算机上我安装了 docker,而在另一台计算机上则没有。每次我打开终端都会出现错误:

/home/ubuntu/scripts/zsh_aliases:2: command not found: docker

...因为我在一些别名中使用了 docker。

如何抑制此检查或将错误重定向到日志文件?

事实证明这个别名产生了一个错误:alias all.restart="docker restart $(docker ps -q)"。我猜是因为$(),但为什么呢?

答案1

调用 docker 的行产生“命令未找到错误”;从评论中,你有一行:

alias all.restart="docker restart $(docker ps -q)"

命令$(docker ...)替换是调用docker,这会在没有 docker 的系统上运行时触发错误。

只需在别名前面检查命令是否存在docker

command -v docker > /dev/null && alias all.restart="docker restart $(docker ps -q)"

如果未找到该命令,该command命令将失败docker,这将绕过后续&& alias部分。如果docker命令存在,则alias执行该命令。

相关内容