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_NAMEthay 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. setenvkhô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 envlệ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 exportnó 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ó envcũng hoạt động ( VAR=value mycommandchạy mycommandvới VARthiết lập value, giống như env VAR=value mycommand). Lý do envrất hữu ích trong dòng shebang là nó thực hiện PATHtra cứu và nó không làm gì khác khi được gọi bằng tên lệnh. envLệ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-ihoặ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=asdfkhô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.)