Оболочка Z использует /bin/sh
если вы запускаете исполняемый скрипт без строки shebang (см. man zshmisc
, раздел COMMAND EXECUTION или посмотрите этот ответ для получения полного списка). Это кажется жестко закодированным. Итак, если вы не хотите использовать unix-way (добавьте строку shebang), вы можете использовать так называемый суффикс псевдонима в оболочке Z, чтобы выполнить все файлы с определенным расширением в определенной программе. В твоем случае
alias -s zsh=zsh
должен сделать свое дело. Общая форма (как приведенный выше пример не так понятен):
alias -s extension=program
Страница man объясняет, как это работает:
Если присутствует флаг -s, определите псевдоним суффикса: если командное слово в командной строке имеет вид text.name
, где text - любая непустая строка, она заменяется текстовым value text.name
. Обратите внимание, что имя обрабатывается как буквенная строка, а не как шаблон.
Конечный пробел в значении не является особенным в этом случае. Например,
alias -s ps=gv
приведет к расширению команды *.ps
до gv *.ps
. Поскольку расширение псевдонима выполняется раньше, чем глобализация, *.ps
затем будет расширен. Суффиксные псевдонимы составляют пространство имен, отличное от других псевдонимов (поэтому в приведенном выше примере все еще возможно создать псевдоним для команды ps), и эти два набора никогда не перечисляются вместе.
Если вы хотите использовать скрипты, которые находятся где-то в вашем $PATH
, используйте
alias -s zsh="zsh -o PATH_SCRIPT"
Это включает опцию PATH_SCRIPT
:
Если установлена опция PATH_SCRIPT, а имя файла не содержит путь к каталогу (т. Е. В имени нет `/'), сначала выполняется поиск в текущем каталоге, а затем путь к команде, заданный переменной PATH.
Обратите внимание, что в текущем каталоге выполняется поиск сценария, даже если .
не в вашем PATH
!