我想要一个别名列表,将其源到我所有计算机上的 .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
执行该命令。