Làm thế nào để tôi bỏ đặt một biến ở dòng lệnh?


80

Tôi đã thử lệnh sau để đặt Proxy trên yaourt:

export ALL_PROXY=http://proxy.example.com:8080

Câu hỏi là làm thế nào để bỏ proxy trên yaourt? Nói chung, làm thế nào tôi có thể bỏ đặt giá trị của một biến trong shell hiện tại?


7
Hãy thửunset ALL_PROXY
coffeMug

@coffeMug cũng có thể đưa ra câu trả lời, bạn cũng có thể xem xét ăn cắp một số thông tin từ đây: stackoverflow.com/a/12263914/1081936
terdon

Ngoài câu trả lời được chấp nhận, nếu có một lệnh bạn thường chạy sử dụng biến môi trường mà bạn không muốn đặt hoặc thay đổi cho phần còn lại của phiên shell của mình, bạn có thể chạy nó như sau: $ ALL_PROXY=http://proxy.example.com:8080 yaourtđó sẽ chỉ đặt envvar cho lệnh chạy. Bạn có thể đặt bao nhiêu FOO=bar BAZ=batbiến tùy ý trước khi chạy lệnh.
chỉ có

Câu trả lời:


113

Để loại bỏ một biến môi trường, hãy chạy

unset ALL_PROXY

Lưu ý rằng một biến môi trường chỉ có hiệu lực trong một chương trình và chương trình mà nó khởi chạy. Nếu bạn đặt biến môi trường trong một cửa sổ shell, nó sẽ không ảnh hưởng đến các cửa sổ shell khác.

Nếu bạn đã thêm export ALL_PROXY=…vào một tệp khởi tạo, hãy xóa nó khỏi đó.

Bạn có thể chạy exportmà không có đối số để xem biến môi trường nào được đặt trong trình bao hiện tại.

Hãy nhớ rằng để tạo một biến shell có sẵn cho các chương trình được bắt đầu bởi shell đó, bạn cần xuất nó, bằng cách chạy export VARsau khi gán VAR=VALUEhoặc bằng cách kết hợp cả hai ( export VAR=VALUE).


19

Để bỏ đặt một biến bị ràng buộc trong sử dụng bash unset VARIABLE( unset ALL_PROXYtrong trường hợp của bạn). Lệnh này thực sự xóa biến. Bạn cũng có thể đặt giá trị của biến thành trống bằng

VARIABLE=

hoặc là

VARIABLE=""

Sự khác biệt là hai lệnh sau không xóa biến. Bạn có thể thấy sự khác biệt bằng cách sử dụng -ucờ với setđể buộc nó xử lý các biến không đặt là lỗi trong khi thay thế:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable

Trong ví dụ trên, bash phàn nàn về việc varkhông liên kết (sau khi bỏ đặt giá trị của nó) là lỗi dự kiến ​​(lưu ý rằng điều này không xảy ra trong lệnh echo thứ hai, có nghĩa là varcó giá trị là emptyhoặc null).


Điều gì xảy ra nếu tôi có một biến trong tệp script shell của mình và tôi lấy tệp đó, làm thế nào để tôi bỏ đặt nó?
Abhinav

@Abhinav sử dụng unsettrong kịch bản. Áp dụng tương tự.
coffeMug
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.