![Fish Shell은 $PATH에 파일이 있는지 테스트합니다.](https://linux55.com/image/94433/Fish%20Shell%EC%9D%80%20%24PATH%EC%97%90%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
Fish 쉘 스크립트에 바이너리 파일이 있는지 테스트하려고 합니다 figlet
. 저는 Linux와 OS X를 사용하고 있기 때문에 파일이 동일한 위치에 있다고 믿을 수 없으며 동적으로 해결해야 합니다. 나는 $(which)
bash에서 이 작업을 수행하는 데 익숙하며 작동합니다.
그러나 물고기의 경우 이는 제대로 작동하지 않습니다. 왜?
function print_hostname --description 'print hostname'
if test -x (which figlet)
hostname | figlet
end
end
답변1
type
fish
Bourne과 같은 쉘 에서 사용됩니다:
if type -q figlet
hostname | figlet
end
또는 실행 파일로 제한합니다 $PATH
(함수, 내장 함수 무시).
if command -s figlet > /dev/null
hostname | figlet
end
당신은 또한 볼 수 있습니다" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?