Tôi đọc ở đây rằng mục đích của export
shell là làm cho biến có sẵn cho các tiến trình con bắt đầu từ shell.
Tuy nhiên, tôi cũng đã đọc ở đây và ở đây rằng "Các quy trình kế thừa môi trường của chúng từ cha mẹ của chúng (quá trình bắt đầu chúng)."
Nếu đây là trường hợp, tại sao chúng ta cần export
? Tôi đang thiếu gì?
Các biến shell không phải là một phần của môi trường theo mặc định? Sự khác biệt là gì?
set -k
là để người ta có thể sử dụngcmd ENVVAR=value
thay thếENVVAR=value cmd
, điều đó sẽ không hoạt động trong ví dụ của bạn trừ khiset -k
được chạy trước khi gọif
. Ngoài ra, hiện tại không có nhiều shell hỗ trợ nó và chỉ tương thích ngược với shell Bourne. Trong trình bao Bourne (hoặc Korn), điều đó sẽ không hoạt động cho các chức năng. Và bởi vì nó ảnh hưởng đến phân tích cú pháp shell, nó phải có hiệu lực tại thời điểm shell đọc mã sử dụng nó ở đó.