Câu trả lời:
Khi bạn thực hiện một chương trình, chương trình con kế thừa các biến môi trường của nó từ cha mẹ. Chẳng hạn, nếu $HOME
được đặt thành /root
cha mẹ thì biến con $HOME
cũng được đặt thành /root
.
Điều này chỉ áp dụng cho biến môi trường được đánh dấu để xuất khẩu. Nếu bạn đặt một biến ở dòng lệnh như
$ FOO="bar"
Biến đó sẽ không hiển thị trong các tiến trình con. Không, trừ khi bạn xuất nó:
$ export FOO
Bạn có thể kết hợp hai câu lệnh này thành một câu duy nhất trong bash (nhưng không phải trong trường học cũ):
$ export FOO="bar"
Dưới đây là một ví dụ nhanh cho thấy sự khác biệt giữa các biến được xuất và không xuất. Để hiểu những gì đang xảy ra, hãy biết rằng sh -c
tạo ra một quy trình shell con kế thừa môi trường của shell cha.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Lưu ý: Để nhận trợ giúp về các lệnh tích hợp shell, hãy sử dụng help export
. Shell dựng sẵn là các lệnh là một phần của trình bao của bạn chứ không phải là các tệp thực thi độc lập như /bin/ls
.
Unix
Các lệnh env, set và printenv hiển thị tất cả các biến môi trường và giá trị của chúng. env và set cũng được sử dụng để đặt các biến môi trường và thường được tích hợp trực tiếp vào shell. printenv cũng có thể được sử dụng để in một biến bằng cách đặt tên biến đó làm đối số duy nhất cho lệnh.
Trong Unix, các lệnh sau cũng có thể được sử dụng, nhưng thường phụ thuộc vào một shell nhất định.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
Bạn có thể có một cái nhìn tại này tại
VARIABLE=value; export VARIABLE
thay vì gán và xuất cùng một lúc. Các set
lệnh trong C Shell là cho các biến shell hơn là biến môi trường; setenv
là đối tác của export
. Các set
lệnh trong vỏ Bourne có nguồn gốc từ in tất cả các biến, không chỉ xuất khẩu (môi trường) biến. Trong lịch sử ít nhất, env
lệnh tách biệt với hệ vỏ (không phải là tích hợp sẵn), mặc dù nó có thể dễ dàng được tạo thành một tích hợp. Nó đặt môi trường cho một lệnh cụ thể, không phải shell chạy nó.
export
là một lệnh tích hợp của bash
shell và các biến thể shell Bourne khác . Nó được sử dụng để đánh dấu một biến shell để xuất sang các tiến trình con.