Tham chiếu các biến môi trường * trong * / etc / môi trường?


19

Gần đây tôi đã phát hiện ra /etc/environment, có vẻ như là một cách chuẩn hơn để thiết lập các biến môi trường đơn giản hơn các tập lệnh, nhưng tôi đã tự hỏi liệu có cách nào để quay lại các biến môi trường tham chiếu trong tệp / etc / môi trường không.

Đó là, tôi có cái này:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

$JAVA_HOME/binTuy nhiên, nếu tôi cố gắng thêm vào định nghĩa PATH, tôi sẽ nhận được $ JAVA_HOME / bin chứ không phải biến nội suy. Để khắc phục điều này, tôi đang tạo môi trường.sh trong profile.d để thêm các /binmục vào đường dẫn, nhưng điều này có vẻ cẩu thả và vô tổ chức.

Có cách nào để phản ứng lại các biến môi trường trong / etc / môi trường không?

Câu trả lời:


13

Các /etc/environmenttập tin được đọc bởi pam_envmô-đun PAM . Nó chỉ hỗ trợ các cặp khóa-giá trị đơn giản, không có sự thay thế ở phía bên tay phải.

Nếu bạn muốn xây dựng giá trị bằng các thay thế hoặc mở rộng vỏ khác, bạn cần phải đi qua một vỏ. /etc/profile(hoặc một tập tin trong /etc/profile.d) là nơi thích hợp cho những điều này. Đây là nơi truyền thống ( /etc/environmentlà một sự đổi mới tương đối gần đây, trong lịch sử của các hệ thống unix), và chắc chắn không có gì cẩu thả khi sử dụng nó. Lợi ích chính của /etc/environmentnó là cho phép các biến môi trường được đặt ngay cả với các phương thức đăng nhập không liên quan đến shell hoặc cho người dùng sử dụng shell không Bourne, nhưng chúng không phổ biến trong thực tế.


Không có sự thay thế, bạn kết thúc với rất nhiều dư thừa /etc/environment, tôi đã viện đến /etc/profile, cảm ơn vì lời đề nghị của bạn.
SAFX

2

Tài liệu Ubuntu làm cho điều này dường như là không thể. NHƯNG, có một câu trả lời.

TRẢ LỜI : Tạo các biến môi trường toàn hệ thống, liên tục trong/etc/.bashrc

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

Chi tiết:
Dưới đây là một số chi tiết từ tài liệu Biến môi trường .
Các khuyến nghị chính thức là sử dụng /etc/environment, như bạn đã thử. Vấn đề là tập tin này không phải là tập tin kịch bản. Nói cách khác, bạn không thể sử dụng các biến trong khai báo biến.

Tài liệu tiếp tục với 2 tệp "Không được đề xuất" khác
/etc/profile/etc/bash.bashrc.

/etc/profile"không làm gì nhiều hơn ngoài việc gọi tệp /etc/bash.bashrc". Vì vậy, thay vì chọn

/etc/bash.bashrc bởi vì "Ubuntu được cấu hình theo mặc định để thực thi tệp này bất cứ khi nào người dùng xâm nhập vào hệ vỏ hoặc môi trường máy tính để bàn."


Tôi đã cập nhật Biến môi trường với sự tư vấn của một số nhà phát triển Ubuntu, vì vậy những tuyên bố "không được đề xuất" này sẽ không còn nữa.
Gunnar Hjalmarsson

"Bất cứ khi nào người dùng nhập vào một vỏ". Tôi nên làm gì khi không có người dùng để nhập shell? Tôi cần các biến môi trường cho người dùng tự động chạy phần mềm khi khởi động. Ví dụ, tôi có 6 dòng cấu hình proxy một mình. Tôi phải làm gì với nó?
eis
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.