Fish Shell은 $PATH에 파일이 있는지 테스트합니다.

Fish Shell은 $PATH에 파일이 있는지 테스트합니다.

Fish 쉘 스크립트에 바이너리 파일이 있는지 테스트하려고 합니다 figlet. 저는 Linux와 OS X를 사용하고 있기 때문에 파일이 동일한 위치에 있다고 믿을 수 없으며 동적으로 해결해야 합니다. 나는 $(which)bash에서 이 작업을 수행하는 데 익숙하며 작동합니다.

그러나 물고기의 경우 이는 제대로 작동하지 않습니다. 왜?

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

답변1

typefishBourne과 같은 쉘 에서 사용됩니다:

if type -q figlet
  hostname | figlet
end

또는 실행 파일로 제한합니다 $PATH(함수, 내장 함수 무시).

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

당신은 또한 볼 수 있습니다" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?

관련 정보