cảnh báo zsh trước khi thực hiện tập tin


4

Tôi thường xuyên thấy mình vô tình chạy các tệp python dưới dạng shell script, vd $ ./test.py

Điều này có khả năng gây ra nhiều thiệt hại nếu không có dòng shebang khi bắt đầu tập tin, vì vậy tôi muốn một cách để zsh đưa ra cảnh báo cho việc này.

Liệu chức năng này đã tồn tại ở đâu đó?

Nếu không, tôi đang nghĩ đến việc sử dụng accept-lineđể thực hiện điều này, nhưng đây có vẻ là một giải pháp tất cả, có cách nào cụ thể hơn không?

Câu trả lời:


3

Bạn có thể sử dụng các bí danh hậu tố để đảm bảo .pycác tệp được chạy bởi python:

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

Khi bạn gõ lệnh kết thúc .pytrên dòng lệnh của bạn, nó sẽ được chạy với /usr/bin/env python.

Lưu ý: điều này không quan tâm liệu tập tin có thể thực thi được hay không. Nếu bạn muốn hạn chế điều này với các .pytệp thực thi , bạn có thể sử dụng một hàm:

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

Tất nhiên, một hạn chế là các tệp trong câu hỏi phải có .pyhậu tố. Một điều nữa là bất kỳ #!dòng nào hiện có đều bị bỏ qua, nhưng điều này có thể được giải quyết bằng cách mở rộng runxpyđể phân tích cú pháp dòng đầu tiên thay vì chỉ sử dụng /usr/bin/pythonmỗi lần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.