Câu trả lời:
Tôi nghĩ rằng trang wiki cộng đồng về các biến môi trường sẽ giúp bạn sắp xếp
Để thêm vào câu trả lời của sagarchalise, tôi có thể tóm tắt những gì liên kết gợi ý là nơi thích hợp cho các cài đặt.
/etc/environment
/etc/profile
hoặc/etc/bash.bashrc
Từ trang:
/etc/environment
[...] đặc biệt có nghĩa là cho các cài đặt biến môi trường toàn hệ thống. Nó không phải là một tập lệnh, mà là bao gồm các biểu thức gán, mỗi biểu thức. Cụ thể, tệp này lưu trữ cài đặt đường dẫn và miền địa phương trên toàn hệ thống.
Sử dụng /etc/profile
là một cách rất hữu ích, nhưng chức năng của nó bị giảm đi rất nhiều trong Ubuntu. Nó chỉ tồn tại để trỏ đến /etc/bash.bashrc
và thu thập các mục từ /etc/profile.d
.
Trên hệ thống của tôi, mục nhập thú vị duy nhất trong profile.d là /etc/profile.d/bash_completion.sh
.
Phiên bản trước của trang Ubuntu được khuyến nghị ~/.pam_environment
, nhưng trang hiện cho thấy rằng nếu điều đó không hoạt động, bạn nên sử dụng
~/.profile
- Đây có lẽ là tệp tốt nhất để đặt các phép gán biến môi trường, vì nó được Trình quản lý hiển thị tự động thực hiện trong phiên máy tính để bàn quá trình khởi động cũng như vỏ đăng nhập khi đăng nhập từ bảng điều khiển văn bản.
~/.bash_profile
hoặc ~./bash_login
- Nếu một trong số này tồn tại, bash sẽ thực thi nó thay vì ~/.profile
khi bash được bắt đầu như một vỏ đăng nhập. Bash sẽ thích ~/.bash_profile
đến ~/.bash_login
. [...] Các tệp này sẽ không ảnh hưởng đến phiên đồ họa theo mặc định. "
~/.bashrc
- "... có thể là nơi dễ nhất để đặt biến". /etc/environment
và khi nào? Nó dường như không hoạt động với cron, ngay cả khi sử dụngSHELL=/bin/bash
/etc/environment
thích JAVA_HOME="/opt/java"
và ANT_HOME="/opt/ant"
cách thực hiện
Bạn đã có:
/ etc / profile: tệp .profile trên toàn hệ thống cho shell Bourne (sh (1)) và shell tương thích Bourne (bash (1), ksh (1), ash (1), ...).
mà trong Lucid và Maverick chạy
/etc/profile.d/*.sh
nếu có và nếu vỏ của người dùng bị lỗi:
/etc/bash.bashrc
Đối với môi trường người dùng, có một mảng khó hiểu cụ thể cho shell và liệu nó có được coi là "shell đăng nhập" hay không. Nếu vỏ bị bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
cho sh / dash:
$HOME/.profile
Đối với zsh, tôi thậm chí sẽ không cố gắng để hiểu điều này .
Theo khuyến nghị trên https://help.ubfox.com/community/En MôiVariables :
Biến môi trường toàn cầu có nghĩa là ảnh hưởng đến tất cả người dùng nên đi vào /etc/environment
.
Các biến môi trường dành riêng cho người dùng nên được đặt trong ~/.pam_environment
.
Tránh các tập tin hồ sơ và RC để thiết lập các biến môi trường trên Ubuntu. Họ đã khiến tôi đau đầu hơn giá trị của họ.
Điều này nói dễ hơn làm tuy nhiên;)
Có thể là bạn có thể chạy vào cùng một khoảng cách cấu hình tồn tại đối với tôi. Xem cách giải quyết cho nhà được mã hóa dưới đây.
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
Tại sao con đường tĩnh xấu xí? ${PATH}
sẽ không làm việc cho tôi. Tôi đã chặn đăng nhập của mình nhiều lần để cố gắng làm việc xung quanh nó để tôi gắn bó với bản sao tĩnh xấu xí của các mặc định :)
Trong các bản phát hành Ubuntu lên đến và bao gồm Chính xác 12.04 Beta 2, nếu bạn đang sử dụng một thư mục chính được mã hóa, bạn sẽ cần phải sửa đổi /etc/pam.d/common-session
để tải nó ~/.pam_environment
. Giải pháp này rõ ràng hoạt động cho các bản phát hành trước đó, nhưng tôi chưa thử nghiệm nó.
Đây dường như là một vấn đề với các thư mục nhà được mã hóa. Tôi đã thêm
phiên yêu cầu pam_env.so
vào cuối /etc/pam.d/common-session và bây giờ ~ / .pam_en môi trường được đọc. Trên một hệ thống khác không có thư mục nhà được mã hóa (cũng 10.04), công việc xung quanh là không cần thiết. Có lẽ trong trường hợp của tôi, hệ thống cố gắng đọc ~ / .pam_en môi trường trước khi nó được giải mã.
Chuyển thể từ câu trả lời của tôi về Siêu người dùng: https://superuser.com/a/408373/66856
${HOME}
sẽ không hoạt động. Không có mở rộng trong .pam_environment
.
.pam_environment
, nhưng HOME
thường không được đặt sớm. Nếu dòng đó đã đọc DEFAULT=${PATH}/Applications/jdk
, bạn sẽ thấy giá trị PATH
được chèn vào nó.