Có thể tìm ra tập tin nào đang thiết lập / thêm vào các biến môi trường và thứ tự ưu tiên của chúng không?


9

Một số biến tôi môi trường ( $PATH, $MANPATHvà bạn bè) đều được phần thiết lập trong các tập tin nguồn khác nhau.

Tôi thấy mình muốn một lệnh hoặc phương thức để nhanh chóng thu thập phần nào , trong một biến môi trường cụ thể, đến từ tệp nào .

My $ PATH, ví dụ, đã rõ ràng được thiết lập (thêm vào) trong .bashrc, /etc/paths, /etc/paths.d/X11... và tôi vẫn đang tìm kiếm tập tin đó bí ẩn cuối cùng mà superfluously tạo ra một định nghĩa con đường trùng lặp trong tôi $PATH.

Sẽ mất một thời gian để xác định chính xác các tệp đóng góp cho các biến môi trường. Phải có một cách hữu ích để bỏ qua lao động không cần thiết này là truy tìm tất cả các setters, hay tôi là người duy nhất nghĩ theo những dòng này?

Câu trả lời:


6

Thường PATHđược thiết lập để một giá trị ban đầu theo một cách rất hệ thống phụ thuộc bởi chương trình mà các bản ghi bạn trong ( pam_envlà một cộng tác viên thường), sau đó /etc/profile~/.profilevà các tập tin mà chúng bao gồm tiếp tục sửa đổi giá trị đó.

Xóa mọi thay đổi thành PATHtrong .bashrc, cài đặt môi trường không thuộc về .bashrc: xem Sự khác biệt giữa .bashrc và .bash_profile .

Trước tiên hãy thử đăng nhập ở chế độ văn bản (ví dụ với ssh localhost), vì khởi động phiên đơn giản hơn nhiều so với ở chế độ đồ họa.

Đặt set -xở đầu /etc/profile~/.profile. Shell sẽ in một dấu vết của những gì nó làm trên luồng lỗi tiêu chuẩn của nó; tìm kiếm các bài tập để PATHtheo dõi.

Không có khái niệm về quyền ưu tiên đối với các phép gán biến môi trường: bất kỳ ai chỉ định chiến thắng cuối cùng.


6

PATH của bạn có thể được đặt ở bất cứ đâu, không chỉ trong tệp .bashrc của bạn. Nhiều khả năng hệ thống của bạn có một tệp /etc/profilevà / hoặc /etc/profile.localthiết lập đường dẫn mặc định cho tất cả người dùng trên hệ thống của bạn. Những thay đổi hoặc bổ sung cụ thể của người dùng đối với nó có thể được đặt trong .profiletệp của bạn nếu chúng không nằm trong bạn .bashrchoặc bạn có thể đang sử dụng mặc định trên hệ thống của mình.

Nếu bạn muốn thực hiện các thay đổi chỉ ảnh hưởng đến bạn, tôi sẽ đưa chúng vào .profilesử dụng mẫu sau:

export PATH=/new/directory:$PATH

do đó chỉnh sửa đường dẫn hiện tại thay vì viết lại hoàn toàn.

Các "gọi" của man bash(hoặc ở đây ) giải thích sự khác biệt giữa .profile.bashrc, và như vậy, và những tệp tin khác và đọc và theo thứ tự khi bạn đăng nhập hoặc bắt đầu một vỏ.


1

Rất khó có cơ chế cho việc này tồn tại. Chỉ cần nghĩ về có bao nhiêu cách để thay đổi giá trị của biến env trong shell.

Bạn có thể có một số may mắn với set -xmặc dù.

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.