Cập nhật: 05/04/2019 bởi Helpsly

Trên hệ điều hành giống Unix, export là một lệnh nội trang của trình bao Bash. Nó chỉ định các biến và hàm được chỉ định sẽ được chuyển cho các tiến trình con.

Sự mô tả

Thông thường, khi bạn chạy một lệnh tại dấu nhắc bash, một quá trình dành riêng được tạo với môi trường riêng của nó, dành riêng cho việc chạy lệnh của bạn. Bất kỳ biến và hàm nào bạn đã xác định trước khi chạy lệnh sẽ không được chia sẻ với các quy trình mới – trừ khi bạn đánh dấu chúng một cách rõ ràng bằng export.

Cú pháp

export [-f] [-n] [name[=value] ...]
export -p

Tùy chọn

Các export lệnh nội trang có các tùy chọn sau:

-f Các -f phải được sử dụng nếu những cái tên tham khảo các chức năng. Nếu -f Không được sử dụng, export sẽ giả định những cái tên là các biến.
-n Các biến được đặt tên (hoặc các hàm, với -f) sẽ không được xuất nữa. Tương đương với việc sử dụng lệnh declare +x Tên.
-p Hiển thị danh sách tất cả các biến và hàm được đánh dấu để xuất.

Các ví dụ

Chuỗi lệnh sau đây sẽ minh họa cách các biến được truyền cho một tiến trình con trong bash, có và không export. Đầu tiên, hãy đặt giá trị của một biến mới có tên myvar:

myvar="This variable is defined."

Xác minh rằng nó đã được đặt và nó có giá trị trong ngữ cảnh shell hiện tại:

echo $myvar
This variable is defined.

Tạo bối cảnh shell mới bằng cách chạy bash tại dấu nhắc lệnh bash:

bash

Bây giờ bạn có một bash shell mới, đang chạy bên trong phiên bash ban đầu của bạn. Biến myvar không có giá trị trong ngữ cảnh này, bởi vì nó không được chuyển từ shell ban đầu:

echo $myvar

(Chỉ một dòng mới được in, bởi vì myvar không có giá trị.)

Hiện nay, exit shell này, trả về cho bạn phiên bash ban đầu:

exit

Nơi đây, myvar vẫn có giá trị:

echo $myvar
This variable is defined.

Bây giờ, hãy bắt đầu lại một phiên bash mới – nhưng lần này, export biến đầu tiên:

export myvar
bash

Lần này, giá trị của myvar được chuyển sang shell mới:

echo $myvar
This variable is defined.

Tuyệt quá. Thoát khỏi vỏ con:

exit

Bây giờ hãy xác minh rằng nó cũng hoạt động với các chức năng.

Tạo một hàm shell mới, myfunc. Bạn có thể xác định một hàm bash shell bằng cách đặt dấu ngoặc đơn sau tên hàm, sau đó là một lệnh ghép. Một lệnh ghép có thể có các dạng khác nhau; ở đây, chúng tôi sẽ đặt nó trong dấu ngoặc nhọn, với dấu chấm phẩy sau mỗi lệnh, bao gồm cả lệnh cuối cùng:

myfunc () { echo "This function is defined."; }

Hiện nay myfunc là tên lệnh bạn có thể chạy trong shell hiện tại:

myfunc
This function is defined.

Để chuyển hàm này cho bất kỳ quy trình con nào, hãy sử dụng export -f:

export -f myfunc

Bạn có thể xác minh rằng nó được thông qua bằng cách bắt đầu bash trong một quy trình con và chạy myfunc:

bash
myfunc
This function is defined.

Hy vọng rằng những ví dụ này giúp bạn hiểu rõ hơn về cách export hữu ích và giúp bạn hiểu rõ hơn về cách bash tạo ra các quy trình mới.

Đừng quên rằng bạn luôn có thể kiểm tra những biến và hàm nào sẽ được xuất sang các quy trình con bằng cách chạy export -p:

export -p
(a really long list of what gets exported from the current shell)

declare – Đặt hoặc xem các giá trị và thuộc tính của các biến và hàm bash.
exec – Phá hủy vỏ hiện tại và thay thế nó bằng một quy trình mới.