Eu tenho ZSH como shell padrão no MacOS, tudo está funcionando bem. ZSH é instalado como pacote de fermentação, Ive definir shell padrão na minha conta, novo shell está listado em /etc/shells
... tudo está definido, como eu disse.
Eu tenho alguns scripts de shell em que eu uso alguns comandos de zsh, como print
. Quando executo o script a partir da linha de comando, print
o comando não é reconhecido e o script falha.
Este script faz não tem a linha shebang. Quando eu coloco a linha shebang para zsh, então tudo funciona; a print
o comando está funcionando.
Desde que eu estou usando apenas ZSH, é possível definir shell padrão para executando scripts , então eu não tenho que colocar shebang line em meus scripts .zsh?
Ou é possível associar .zsh
extensão para execução de shell ZSH?
Respostas:
o Concha Z usa
/bin/sh
se você executar um script executável sem a linha shebang (vejaman zshmisc
, seção EXECUÇÃO DE COMANDO ou check out esta resposta para uma lista abrangente). Isso parece codificado. Então, se você não quiser usar o unix-way (add shebang line), você pode usar um alias de sufixo no shell Z para executar todos os arquivos com uma certa extensão com um determinado programa. No seu casodeve fazer o truque. A forma geral é (como o exemplo acima não é tão claro):
A página man explica como isso funciona:
Se você quiser usar scripts que estão localizados em algum lugar no seu
$PATH
, usarIsso permite a opção
PATH_SCRIPT
:Por favor, note que o diretório atual é procurado pelo script, mesmo se
.
não está no seuPATH
!fonte
alias -s zsh=/usr/local/bin/zsh
e invocar um script que está no caminho, mas não na pasta atual, então o sistema "não pode abrir o arquivo de entrada", o que faz sentido. Então, este é um passo em frente, mas ainda não a solução final ...