Cách tạo UNIX UNIX thiết lập lệnh Lệnh in chỉ các biến môi trường


2

Tôi đã quen với bash set lệnh chỉ liệt kê một danh sách các thiết lập môi trường, vd. ĐƯỜNG và như vậy.

Tuy nhiên, trên hệ thống Ubuntu tôi vừa thiết lập, thực thi set bỏ 2000 dòng văn bản, bao gồm rất nhiều chức năng như thế này:

dequote () 
{ 
    eval printf %s "$1" 2> /dev/null
}

Làm thế nào để tôi chỉ in các biến môi trường?


Lưu ý rằng hệ thống Ubuntu của bạn gần như chắc chắn cũng đang sử dụng bash - đó là mặc định trên các bản cài đặt mới.
Andrew Ferrier

Câu trả lời:


3

Theo mặc định set cho thấy biến vỏ , không chỉ các biến môi trường. Trong bash các chức năng được coi là một phần của các biến. Xem https://askubfox.com/questions/26318/envir-variable-vs-shell-variable-whats-the-difference .

Nếu bạn dùng env hoặc là printenv họ sẽ chỉ môi trường xuất sang quy trình con, không phải nhất thiết phải giống như của bạn bash môi trường:

$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1

Cú đánh declaretypeset nội dung có thể liệt kê tất cả các loại biến, để bỏ qua các hàm:

declare -F

Đầu ra của chúng ở dạng phù hợp để tạo lại trạng thái trong tập lệnh shell, do đó, nó hơi dài dòng, mặc dù bạn có thể phân biệt giữa các mảng, số nguyên và các loại khác (tùy thuộc vào phiên bản). Xem thêm đầu ra của export -p.

Và từ https bạn có thể yêu cầu bash sử dụng chế độ POSIX và set cư xử "đúng":

( set -o posix ; set ) 

Nó chạy trong một lớp con để nó không thay đổi lớp vỏ đang chạy của bạn và nó chọn đúng các biến chưa được xuất vào môi trường được kế thừa.


Tôi thấy nó hữu ích để thêm một bí danh trong .bashrc vì vậy tôi có một realset lệnh, và do đó không phải nhớ câu thần chú con: alias realset='( set -o posix ; set )'
Sean Werkema

2

Nếu bạn muốn liệt kê tất cả các biến môi trường, chỉ cần nhập env.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.