Fish shell 测试 $PATH 中是否存在文件

Fish shell 测试 $PATH 中是否存在文件

我正在尝试在 Fish shell 脚本中测试二进制文件是否存在figlet。由于我使用 Linux 和 OS X,因此我不能依赖位于同一位置的文件,并且需要动态解析它。我习惯$(which)在 bash 中执行此操作,这很有效。

但对于鱼来说,这不能正常工作。为什么?

function print_hostname --description 'print hostname'
  if test -x (which figlet)
    hostname | figlet
  end
end

答案1

typefish类似 Bourne 的 shell 中使用:

if type -q figlet
  hostname | figlet
end

或者限制为可执行文件$PATH(忽略函数、内置函数):

if command -s figlet > /dev/null
  hostname | figlet
end

也可以看看为什么不用“哪个”呢?那该用什么呢?

相关内容