Câu trả lời:
Một số người có thể sử dụng một con trăn khác (perl, v.v.) so với hệ thống. /usr/bin/env python
sẽ chạy phiên bản được cấu hình như phiên bản hiện tại, có thể làm cho tập lệnh dễ di chuyển hơn.
Mặt khác, theo báo cáo, một số hệ thống không có /usr/bin/env
. Ngoài ra, bạn không thể sử dụng #!/usr/bin/env foo x
thay thế cho #!foo x
, vì foo x
sẽ được hiểu là một đối số duy nhất. Vì vậy, giá trị của cách tiếp cận là tranh cãi.
info coreutils 'env invocation'
tôi có thể thấy hình thức gọi này đảm bảo rằng nó là nhị phân bên ngoài thay vì được tích hợp sẵn, nhưng không có dấu hiệu nào env python
khác biệt python
như thế nào?
PATH
Có lẽ bạn bao gồm /usr/local/bin
đầu tiên. Nếu ai đó đã cài đặt thủ công python ở đó, sau đó env
sẽ gọi nó, trong khi #!/usr/bin/python
sẽ bỏ qua nó.
virtualenv
là một công cụ khá phổ biến và nó cài đặt một python thực thi trong thư mục làm việc. Bạn sẽ cần env
mẹo để làm cho nó hoạt động chính xác.
env python
giống như python
. Tuy nhiên, vấn đề là bạn không thể viết một shebang như #!python
: bạn cần chỉ định một đường dẫn đầy đủ.