Назад | Перейти на главную страницу

Получить на zsh тот же результат, что и при выполнении `type -t` в bash?

У меня есть сценарий оболочки, который использует 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