export VARIABLE_NAME='some value'
là cách để thiết lập một biến môi trường trong bất kỳ vỏ POSIX-compliant ( sh
, dash
, bash
, ksh
, vv .; cũng Zsh). Nếu biến đã có giá trị, bạn có thể sử dụng export VARIABLE_NAME
để biến nó thành biến môi trường mà không thay đổi giá trị.
Các shell Bourne Pre-POSIX không hỗ trợ điều này, đó là lý do tại sao bạn sẽ thấy các tập lệnh tránh export VARIABLE_NAME='some value'
và sử dụng VARIABLE_NAME='some value'; export VARIABLE_NAME
thay thế. Nhưng vỏ Bourne trước POSIX là cực kỳ hiếm hiện nay.
setenv VARIABLE_NAME='some value'
là cú pháp csh để đặt biến môi trường. Không giống như trong sh , setenv VARIABLE_NAME
. setenv
không tồn tại trong sh và csh cực kỳ hiếm khi được sử dụng trong các tập lệnh và đã bị vượt qua bởi bash để sử dụng tương tác trong 20 năm qua (và zsh thậm chí lâu hơn), vì vậy bạn có thể quên nó trừ khi bạn gặp phải nó.
Các env
lệnh là rất hiếm khi hữu ích trừ dòng công việc . Khi được gọi mà không có đối số, nó sẽ hiển thị môi trường, nhưng export
nó sẽ tốt hơn (được sắp xếp và thường được trích dẫn để phân biệt các dòng mới trong các giá trị từ các dòng mới tách các giá trị. Khi được gọi với các đối số, nó chạy một lệnh với các biến môi trường bổ sung, nhưng cùng một lệnh mà không có env
cũng hoạt động ( VAR=value mycommand
chạy mycommand
với VAR
thiết lập value
, giống như env VAR=value mycommand
). Lý do env
rất hữu ích trong dòng shebang là nó thực hiện PATH
tra cứu và nó không làm gì khác khi được gọi bằng tên lệnh. env
Lệnh này có thể hữu ích để chạy lệnh với chỉ một vài biến môi trường với-i
hoặc không có tham số để hiển thị môi trường bao gồm các biến có tên không hợp lệ mà shell không nhập.
VAR=asdf
không cập nhật môi trường nếuVAR
đã có trong môi trường. (Điều này không đúng trong vỏ Bourne ban đầu.)