Несколько дней назад я остался доволен своим ответом. Я также знал, что whichкоманда не используется, чтобы проверить, существует ли команда. Теперь я не очень доволен своим ответом, и я ссылаюсь на этот замечательный ответ .
С помощью простой whichкоманды:
which foo.sh
Или typeкоманда:
type foo.sh
И вы можете влиять на это с помощью порядка путей в вашем $PATHили через абсолютный путь при запуске скрипта, например
/home/user/scripts/foo.sh
пример
Если PATH определяется как показано ниже
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
И вы запускаете скрипт или что-то еще, что находится внутри /usr/local/binи внутри /usr/binскрипта /usr/local/binкак более высокий приоритет.
bashиzshесть такжеtypeвстроенный; вместо этого, вzshwhichотличие отbash, является встроенным (и не/usr/bin/which)