4

Я часто обнаруживаю, что случайно запускаю файлы python как сценарии оболочки, например, $ ./test.py

Это может нанести большой ущерб, если в начале файла не было строки shebang, поэтому я бы хотел, чтобы zsh предупреждал об этом.

Эта функциональность уже где-то существует?

Если нет, я думаю об использовании accept-line для реализации этого, но это похоже на универсальное решение, есть ли более конкретный способ?

1 ответ1

3

Вы можете использовать псевдонимы суффиксов, чтобы гарантировать, что .py файлы запускаются python:

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

Когда вы сейчас наберете в командной строке команду, которая заканчивается на .py , она будет запущена с /usr/bin/env python .

Примечание: это не волнует, является ли файл исполняемым или нет. Если вы хотите ограничить это исполняемыми файлами .py , вы можете использовать функцию:

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

Конечно, одно ограничение заключается в том, что файлы должны иметь суффикс .py . Другое дело, что любой существующий #! -line игнорируется, но это может быть решено путем расширения runxpy для анализа первой строки вместо простого использования /usr/bin/python каждый раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .