linux - 如何在多个命令中优先选择一个命令

标签 linux bash shell supervisord

我正在尝试创建一个基本实用程序,我需要在机器上安装 supervisord。但问题是它取决于用户,他/她如何安装它,所以在这里我试图涵盖几乎所有场景以获得 supervisord 命令。

以下是我现在正在使用的代码。

if [[ -f "/opt/anaconda/bin/supervisord" ]]; then
  RUNNER="/opt/anaconda/bin/supervisord"
elif [[ -f "/usr/local/bin/supervisord" ]]; then
  RUNNER="/usr/local/bin/supervisord"
elif [[ -f "/usr/bin/supervisord" ]]; then
  RUNNER="/usr/bin/supervisord"
elif [[ "$(command -v supervisord)" ]]; then
  RUNNER="supervisord"
else
  echo "supervisord is not install on this machine"
  exit 1
fi

我正在寻找更好的方法来实现这一目标。

最佳答案

发布的代码检查了一些绝对路径, 当它找到一个存在时, 它会使用那个。 这不是一个好主意。 您可以期望用户以这样一种方式设置他们的 PATH,以便无论在哪里,都能使用正确版本的 supervisord。 换句话说,PATH 上可用的命令必须是首选。

if type supervisord &>/dev/null; then
  RUNNER=supervisord
elif ...
  ...
fi

关于linux - 如何在多个命令中优先选择一个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53791022/

相关文章:

linux - 阻止串行终端在屏幕中间放置提示

linux - 使用 Bash 和 GNU 工具将 GMT 时间戳转换为本地时间

objective-c - 从 cocoa (obj.c) 执行 shell 脚本并响应

c - 使用 waitpid 和 WNOHANG 区分进程状态

python - 如何在 linux LXDE 上使用 tkinter 删除标题栏而不使用 overrideredirect 或属性?

检查我在linux中使用的串口

linux - Bash中的 'eval'命令及其典型用途

linux - 检查本地 git repo 是否领先/落后于远程

ios - 当我在 xcode 中构建我的应用程序时,出现错误 :/bin/sh: bad interpreter: Operation not permitted

linux - 如何找出 ubuntu 中 http_proxy 设置的位置?