O Z shell usa /bin/sh
se você executar um script executável sem a linha shebang (consulte man zshmisc
, seção COMMAND EXECUTION ou confira esta resposta para uma lista abrangente). Isso parece codificado. Então, se você não quiser usar o unix-way (adicione shebang line), você pode usar um apelido chamado sufixo no shell Z para executar todos os arquivos com uma certa extensão com um certo programa . No seu caso
alias -s zsh=zsh
deve fazer o truque. A forma geral é (como o exemplo acima não é tão claro):
alias -s extension=program
A página man explica como isso funciona:
If the -s flag is present, define a suffix alias: if the command word on a command line is in the form
text.name
, where text is any non-empty string, it is replaced by the textvalue text.name
. Note that name is treated as a literal string, not a pattern.A trailing space in value is not special in this case. For example,
alias -s ps=gv
will cause the command
*.ps
to be expanded togv *.ps
. As alias expansion is carried out earlier than globbing, the*.ps
will then be expanded. Suffix aliases constitute a different name space from other aliases (so in the above example it is still possible to create an alias for the command ps) and the two sets are never listed together.
Se você quiser usar scripts localizados em algum lugar no seu $PATH
, use
alias -s zsh="zsh -o PATH_SCRIPT"
Isso ativa a opção PATH_SCRIPT
:
If the option PATH_SCRIPT is set, and the file name does not contain a directory path (i.e. there is no '/' in the name), first the current directory and then the command path given by the variable PATH are searched for the script.
Por favor, note que o diretório atual é procurado pelo script, mesmo que .
não esteja no seu PATH
!