Я знаю, что когда вы находитесь в оболочке, единственными командами, которые можно использовать, являются те, которые можно найти в некотором каталоге, установленном в PATH. Даже я не знаю, как узнать, какие каталоги находятся в моей переменной PATH (и это еще один хороший вопрос, на который можно было бы ответить), вот что я хотел бы знать:
Прихожу в оболочку и пишу:
$ lshw
Я хочу знать команду оболочки, которая может сказать мне, ГДЕ находится эта команда. Другими словами, где находится этот «исполняемый файл»?
Что-то вроде:
$ location lshw
/usr/bin
Кто угодно?
источник
locate
этим, может помочь найти файлы. Он использует базу данных,updatedb
которая запускается из задания cron. Посколькуlocate
поиск выполняется в базе данных, а не во всей файловой системе, это намного быстрееfind
(что можно использовать в крайнем случае).type -a
может сбивать с толку. например, в случае, еслиnvm
это функция bash, которую мне нужно было сделать:type -a nvm | head -n1
узнать, что именноnvm
.type -a
выводит определение функции, а также тип исполняемого файла. Риск использованияhead
заключается в том, что в случае имен с более чем одним типом дополнительные типы не будут выводиться. Возможно, вы захотите посмотретьtype -t
.Как это:
Чтобы увидеть все команды, соответствующие вашему пути:
источник
which
проблематично, потому что существует несколько реализаций, многие из которых делают совершенно неправильные вещи, а другие, похоже, работают нормально, но имеют странные сюрпризы. Вы должны предпочестьtype
.type -a lshw
PATH
является переменной окружения и может отображаться с помощью команды echo:Это список путей, разделенных символом двоеточия '
:
'Команда
which
сообщает вам, какой файл запускается при запуске команды:иногда вы получаете путь к символической ссылке; если вы хотите отследить эту ссылку до того места, где находится фактический исполняемый файл, вы можете использовать
readlink
и скормить ему выводwhich
:-f
Параметр предписывает ,readlink
чтобы после символической ссылки рекурсивно.Вот пример с моей машины:
источник
источник
В TENEX C Shell, tcsh , можно перечислить расположение (а) команды или, если это встроенная команда, используя
where
команду, например:источник
Альтернативой
type -a
являетсяcommand -V
Поскольку в большинстве случаев меня интересует только первый результат, я также трубку с головы. Таким образом, экран не будет наводнен кодом в случае использования функции bash.
источник
Оболочка Korn
ksh
предлагаетwhence
встроенную функцию, которая определяет другие встроенные средства оболочки, макросы и т. Д. Однако этаwhich
команда более переносима.источник
whence -a
похож на Bashtype -a
.