Tôi thấy hai cách sử dụng cho SHELL
biến môi trường:
- Nó có thể được sử dụng để chỉ định shell tương tác mà người dùng muốn sử dụng và / hoặc
- nó có thể được sử dụng bởi các tiến trình để thực thi các lệnh khác, thay thế lệnh trong
/bin/sh -c "..."
thành ngữ thông thường .
Nếu nó chỉ được sử dụng cho cái trước, nó có thể là một thứ gì đó rất kỳ lạ (ví dụ ipython
), nếu nó cũng được sử dụng cho cái sau, nó cần cung cấp một dạng tương thích POSIX cơ bản, ví dụ như hiểu -c
thông số và giữ nguyên môi trường ( đó là khó khăn đáng ngạc nhiên ).
Các tiêu chuẩn POSIX không phải là rất rõ ràng ở đây, nó chỉ viết.
Biến này sẽ đại diện cho một tên đường dẫn của trình thông dịch ngôn ngữ lệnh ưa thích của người dùng. Nếu trình thông dịch này không phù hợp với Ngôn ngữ lệnh Shell trong khối lượng Shell và Tiện ích của IEEE Std 1003.1-2001, Chương 2, Ngôn ngữ lệnh Shell, các tiện ích có thể hoạt động khác với các ngôn ngữ được mô tả trong IEEE Std 1003.1-2001.
Việc sử dụng thứ hai có thực sự phổ biến và / hoặc hợp lệ không, và do đó có gì phải lo lắng nếu tôi đặt SHELL
thành thứ gì đó lạ không?
make
có thể sử dụng SHELL
, đó là đơn giản. Nhưng đoạn bắt đầu "Nếu nó chỉ được sử dụng", vv, làm suy yếu câu hỏi.
SHELL
đặc biệt ở khía cạnh đó (ít nhất là đối với gnu make), nó không được khởi tạo theo cách đó.
$SHELL
là biến môi trường duy nhất make
không được phép nhập. Điều này là do người dùng có thể có một vỏ như thế csh
không tương thích.
system
chứa "Một người đánh giá đề xuất rằng việc triển khai hệ thống () có thể muốn sử dụng biến môi trường như SHELL để xác định trình thông dịch lệnh nào sẽ sử dụng. Việc triển khai được cho là sẽ sử dụng trình thông dịch lệnh mặc định nếu môi trường được chỉ định bởi môi trường biến không có sẵn. Điều này sẽ cho phép người dùng, khi sử dụng một ứng dụng nhắc các dòng lệnh được xử lý bằng system (), để chỉ định một trình thông dịch lệnh khác. Việc triển khai như vậy không được khuyến khích. "
SHELL
là bắt buộc: không phải vậy. POSIX chỉ nêu cách biến được diễn giải khi được đặt. Đối với "chính xác", khía cạnh đó làm cho câu hỏi dựa trên ý kiến (nó sẽ chỉ thu hút ý kiến).