Bạn chỉ cần export
các biến nên được "nhìn thấy" bởi các chương trình khác mà bạn khởi chạy trong shell, trong khi các biến chỉ được sử dụng bên trong shell thì không cần phải chỉnh sửa export
.
Đây là những gì trang người đàn ông nói:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Điều này có thể được chứng minh bằng những điều sau đây:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Giải trình:
- Lần đầu tiên tôi đặt
${MYVAR}
là biến Shell với MYVAR="value"
. Sử dụng echo
I có thể lặp lại giá trị của nó vì echo là một phần của shell.
- Sau đó tôi tạo ra
echo.sh
. Đó là một kịch bản nhỏ về cơ bản là giống nhau, nó chỉ lặp lại ${MYVAR}
, nhưng sự khác biệt là nó sẽ chạy trong một quy trình khác vì đó là một kịch bản riêng biệt.
- Khi gọi
echo.sh
nó không có kết quả gì, vì quy trình mới không kế thừa${MYVAR}
- Sau đó, tôi xuất
${MYVAR}
vào môi trường của mình với export
từ khóa
- Khi tôi chạy lại như cũ
echo.sh
, nó lặp lại nội dung ${MYVAR}
vì nó lấy nó từ môi trường
Để trả lời câu hỏi của bạn:
Nó phụ thuộc vào nơi một biến sẽ được sử dụng, cho dù bạn có phải xuất nó hay không.