2010-06-17 30 views
12

Tôi có một số cài đặt proxy mà thỉnh thoảng tôi chỉ muốn bật, vì vậy tôi không muốn đặt chúng trong số ~/.bash_profile của mình. Tôi đã thử đặt chúng trực tiếp trong ~/bin/set_proxy_env.sh, thêm ~/bin vào PATHchmod +x nhập tập lệnh nhưng mặc dù tập lệnh chạy, các biến không dính trong vỏ của tôi. Có ai biết làm thế nào để có được họ để dính xung quanh cho phần còn lại của phiên trình bao?Làm cách nào để đặt biến môi trường bash từ tập lệnh?

Trả lời

18

Sử dụng một trong số:

source <file> 

. <file> 
+0

rằng thưa bạn, là tiền trong ngân hàng – tofutim

14

Trong kịch bản sử dụng

export varname=value

và cũng thực thi kịch bản với:

source set_proxy_env.sh.

Từ khóa export đảm bảo biến được đánh dấu để bao gồm tự động trong môi trường của các lệnh được thực hiện sau đó. Sử dụng source để thực thi tập lệnh sẽ bắt đầu bằng trình bao hiện tại thay vì khởi chạy tập lệnh tạm thời cho tập lệnh.

+0

tôi đã có 'export'; đó là 'nguồn' tôi đã mất tích. –

4

Bạn đã thử điều này:

. ~/bin/set_proxy_env.sh

Chạy nó bằng chính nó sẽ mở ra một subshell riêng biệt (tôi nghĩ) và thiết lập các biến đó. Nhưng sau đó các ràng buộc bị mất sau khi thoát trở lại vào vỏ của bạn. Dấu chấm ở phía trước bảo nó chạy nó trong cùng một hệ vỏ.

Ngoài ra, đừng quên export các biến bạn cần như vậy: export MYVAR=value

+0

Không cần phải xuất mọi biến số. Chỉ những cái bạn cần hiển thị cho các tiến trình con. –

+0

Ah vâng, đó là ý của tôi :) –

Các vấn đề liên quan