zsh aviso antes de executar o arquivo

4

Eu frequentemente me encontro acidentalmente executando arquivos python como scripts de shell, por exemplo $ ./test.py

Isso tem o potencial de causar muitos danos se não houver uma linha no começo do arquivo, então eu gostaria que o zsh desse um aviso para isso.

Esta funcionalidade já existe em algum lugar?

Se não, estou pensando em usar accept-line para implementar isso, mas isso parece ser uma solução abrangente, existe uma maneira mais específica?

    
por simonzack 20.02.2014 / 14:46

1 resposta

3

Você pode usar aliases de sufixo para garantir que .py arquivos sejam executados por python:

alias -s py='/usr/bin/env python'

Quando você digitar o comando que termina em .py em sua linha de comando, ele será executado com /usr/bin/env python .

Nota: isso não importa se o arquivo é executável ou não. Se você quiser restringir isso para arquivos executáveis .py , você pode usar uma função:

runxpy () {
    if [[ -x "$1" ]] ; then
        /usr/bin/env python "$@"
    else
        "$@"
    fi
}
alias -s py=runxpy

Uma restrição é, obviamente, que os arquivos em questão tenham o sufixo .py . Outra é que qualquer #! -line existente é ignorada, mas isso poderia ser resolvido estendendo runxpy para analisar a primeira linha em vez de usar apenas /usr/bin/python todas as vezes.

    
por 21.02.2014 / 13:05

Tags