Tôi đoán bạn đang đến từ nền cửa sổ. Vì vậy, tôi sẽ đối chiếu chúng (tôi cũng là người mới làm quen với linux). Tôi tìm thấy câu trả lời của người dùng cho nhận xét của tôi, rất hữu ích trong việc tìm hiểu mọi thứ.
Trong Windows, một biến có thể là vĩnh viễn hoặc không. Thuật ngữ Biến môi trường bao gồm một biến được đặt trong trình bao cmd bằng lệnh SET, cũng như khi biến được đặt trong GUI cửa sổ, do đó được đặt trong sổ đăng ký và có thể xem được trong các cửa sổ cmd mới. ví dụ: tài liệu cho lệnh set trong windows https://technet.microsoft.com/en-us/library/bb490998.aspx "Hiển thị, đặt hoặc xóa các biến môi trường. Được sử dụng mà không có tham số, set hiển thị cài đặt môi trường hiện tại." Trong Linux, set không hiển thị các biến môi trường, nó hiển thị các biến shell mà nó không gọi / gọi là biến môi trường. Ngoài ra, Linux không sử dụng set để thiết lập các biến (ngoài các tham số vị trí và các tùy chọn shell, mà tôi giải thích ở phần cuối), chỉ để hiển thị chúng và thậm chí sau đó chỉ để hiển thị các biến shell. Windows sử dụng set để thiết lập và hiển thị, ví dụ set a = 5, linux thì không.
Trong Linux, tôi đoán bạn có thể tạo một tập lệnh đặt các biến khi khởi động, ví dụ /etc/profile
hoặc /etc/.bashrc
nhưng nếu không, chúng không vĩnh viễn. Chúng được lưu trữ trong RAM.
Trong Linux có sự phân biệt giữa các biến shell và các biến môi trường. Trong Linux, các biến shell chỉ nằm trong shell hiện tại và các biến Môi trường, nằm trong shell đó và tất cả các shell con.
Bạn có thể xem các biến shell bằng set
lệnh (mặc dù lưu ý rằng không giống như windows, các biến không được đặt trong linux bằng lệnh set).
set -o posix; set
(làm điều đó set -o posix một lần đầu tiên, giúp không hiển thị quá nhiều thứ không cần thiết). Vì vậy, set
hiển thị các biến shell.
Bạn có thể xem các biến môi trường bằng env
lệnh
các biến shell được đặt với ví dụ: just a = 5
biến môi trường được đặt với xuất, xuất cũng đặt biến shell
Ở đây bạn thấy biến shell được đặt zzz với zzz = 5 và nó hiển thị khi chạy set
nhưng không hiển thị dưới dạng biến môi trường.
Ở đây chúng ta thấy yyy được đặt với export, vì vậy nó là một biến môi trường. Và xem nó hiển thị dưới cả biến shell và biến môi trường
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
các chủ đề hữu ích khác
/unix/176001/how-can-i-list-all-shell-variables
/ubuntu/26318/enosystem-variable-vs-shell-variable-whats-the-difference
Lưu ý - một điểm mà nó xây dựng một chút và có phần sửa chữa những gì tôi đã viết, đó là, trong bash linux, 'set' có thể được sử dụng để đặt "tham số vị trí" và "tùy chọn / thuộc tính shell", và về mặt kỹ thuật cả hai đó là các biến, mặc dù các trang man có thể không mô tả chúng như vậy. Tuy nhiên, như đã đề cập, set sẽ không đặt các biến shell hoặc biến môi trường). Nếu bạn làm vậy set asdf
thì nó sẽ đặt $ 1 thành asdf, và nếu echo $1
bạn thấy asdf. Nếu bạn làmset a=5
nó sẽ không đặt biến a, bằng 5. Nó sẽ đặt tham số vị trí $ 1 bằng chuỗi "a = 5". Vì vậy, nếu bạn đã từng thấy tập hợp a = 5 trong linux thì đó có thể là một sai lầm trừ khi ai đó thực sự muốn chuỗi a = 5, bằng $ 1. Một thứ khác mà tập hợp của linux có thể thiết lập, là các tùy chọn / thuộc tính shell. Nếu bạn thiết lập - bạn sẽ thấy danh sách chúng. Và bạn có thể làm ví dụ set -o verbose
, tắt, để bật chi tiết (btw mặc định xảy ra là tắt nhưng điều đó không có gì khác biệt với điều này). Hoặc bạn có thể làm set +o verbose
để tắt tính dài dòng. Windows không có cách sử dụng như vậy cho lệnh thiết lập của nó.