Biến $ PATH trên toàn hệ thống được đặt ở đâu?


10

Tôi đang sử dụng Ubuntu Desktop 14.04 và như vậy, tôi đang sử dụng shell không đăng nhập. Khi tôi mở thiết bị đầu cuối GUI, đầu tiên các phiên shell không đăng nhập sẽ đọc các tệp khởi động sau:

/etc/bash.bashrc
~/.bashrc

Các shell không đăng nhập kế thừa môi trường từ tiến trình cha, là shell đăng nhập, do đó phiên cũng đọc các tệp khởi động sau:

/etc/profile
~/.bash_profile

Tuy nhiên, tôi không thể tìm thấy $PATHcác đường dẫn trên toàn hệ thống thích /bin, /sbin, /usr/bin, /usr/sbin, đặt trong bất kỳ của những tập tin này. Đâu là $PATHthiết lập cho các thư mục này?

Câu trả lời:


16

Độ rộng hệ thống (mặc định) PATHđược đặt trong /etc/environmenttệp.

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Nó về cơ bản là nơi để lưu các biến môi trường toàn cầu.


+1, tuy nhiên, bạn có biết rằng $PATHnó được kế thừa bởi vỏ đăng nhập gốc hay nếu nó được tải lại bởi mỗi bashphiên bản?
kos

@kos Tất cả các tiến trình con thừa hưởng môi trường từ shell cha trừ khi tất nhiên được chạy trong môi trường đã sửa đổi ..
heemayl

Tôi nhận thấy rằng vỏ dường như không mở rộng $HOMEbiến. Chẳng hạn, việc thêm $HOME/.composer/vendor/binvào PATHin /etc/environmentkhông cho phép các nhị phân trong thư mục này được thực thi mà không có tiền tố đường dẫn. Sử dụng ~/.composer/vendor/bincũng không hoạt động. Tôi thấy cần phải thêm đường dẫn tuyệt đối, ví dụ : /home/vagrant/.composer/vendor/bin. Điều này có vẻ liên quan (mặc dù không giải thích được hành vi này): Askubfox.com/questions/402353/ mẹo
Ben Johnson

2
@BenJohnson Điều đó đơn giản là vì /etc/environment(và ~/.pam/environment) được đọc bởi pam_envmô-đun PAM, không phải shell hoặc bất cứ thứ gì khác hiểu các biến shell / môi trường; cùng ~mở rộng. Vì vậy, bạn cần sử dụng đường dẫn tuyệt đối ở đó.
heemayl
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.