У меня есть сценарий оболочки, который использует type -t
, но поскольку изначально он был написан для трепать и на этой машине я на zsh, это не работает.
Я вижу документы bash, которые type -t
делает:
Если используется параметр -t, тип печатает одно слово, которое является одним из 'псевдонима', 'функции', 'встроенного', 'файла' или 'ключевого слова', если имя является псевдонимом, функцией оболочки, встроенной оболочкой, диском. файл или зарезервированное слово оболочки соответственно. Если имя не найдено, ничего не печатается, и type возвращает статус ошибки.
Но в zsh, type
не принимает -t
вариант, и на самом деле это псевдоним whence
:
введите [-fpam] имя ... То же, что и откуда -v.
И откуда:
Для каждого имени укажите, как оно будет интерпретироваться при использовании в качестве имени команды. Флаг '-v' дает более подробный отчет. Флаг '-c' выводит результаты в формате, подобном csh, и имеет приоритет над '-v'. Флаг '-f' вызывает отображение содержимого функции оболочки, чего в противном случае не произошло бы, если бы не использовался флаг '-c'. Флаг '-p' выполняет поиск пути по имени, даже если это псевдоним, зарезервированное слово, функция оболочки или встроенная функция. Флаг '-a' выполняет поиск всех вхождений имени в пути к команде. С флагом '-m' аргументы принимаются как шаблоны (которые должны быть заключены в кавычки), и информация отображается для каждой команды, соответствующей одному из этих шаблонов.
Что не включает желаемый результат. Способ получить эквивалентный результат на zsh? Смена снарядов на этой машине невозможна.
Как выходы из откуда -w в zsh и введите -t в bash есть что-то похожее (следующая таблица составлена из личных тестов, поэтому я рекомендую относиться к ней с осторожностью)
type -t whence -w
alias alias
function function
builtin builtin
file command
keyword reserved
? hashed
? none
Кажется, не так уж и сложно создать сценарий в zsh, имитирующий поведение type -t в bash. Вы могли бы даже, например, с помощью псевдонима замените встроенный тип в zsh с вашей командой в zsh