2009-10-29 44 views

Trả lời

85

Cũng như những người khác đã đề cập, một số hệ thống Linux hiện sử dụng thư mục /etc/profile.d/; bất kỳ tệp nào .sh trong đó sẽ được cung cấp bởi /etc/profile. Đó là hơi neater để giữ cho công cụ môi trường tùy chỉnh của bạn trong các tập tin này hơn là chỉ chỉnh sửa /etc/profile.

+4

Điều gì sẽ xảy ra nếu một số người dùng sử dụng một trình bao khác, như zsh? –

+44

đây không phải là toàn cục ... nó bị giới hạn đối với trình bao .. quá xấu nó là câu trả lời được chấp nhận nhiều nhất – momomo

+1

zsh sẽ nguồn tệp .sh trong /etc/profile.d/, bạn có thể xem nó từ/etc/zshrc @ Matthieu Napoli – Bily

16

Thật ngạc nhiên, Unix và Linux không thực sự có một nơi để đặt các biến môi trường toàn cầu. Điều tốt nhất bạn có thể làm là sắp xếp cho bất kỳ trình bao cụ thể nào để khởi tạo trang cụ thể.

Nếu bạn đặt nó trong /etc/profile, điều đó sẽ xử lý mọi thứ cho hầu hết người dùng vỏ tương thích với posix. Điều này có lẽ là "đủ tốt" cho các mục đích không quan trọng.

Nhưng bất kỳ ai có vỏ csh hoặc tcsh sẽ không nhìn thấy nó và tôi không tin csh có tệp khởi tạo chung.

+1

'/ etc/environment' thực sự có vẻ như đặt biến môi trường cho tôi, ngay cả khi người dùng root. Tôi biết rằng '/ etc/environment' nằm trên amazon linux và ubuntu. Tôi đã không nhận được để kiểm tra nếu làm việc cho csh, tcsh, hoặc zsh. –

5

Một số trích đoạn thú vị từ manpage bash:

Khi bash được gọi là tương tác vỏ đăng nhập, hoặc như là một vỏ không tương tác với các tùy chọn --login, nó đầu tiên đọc và thực hiện lệnh từ tệp /etc/profile, nếu tệp đó tồn tại. Sau khi đọc tập tin đó, nó tìm kiếm ~/.bash_profile, ~/.bash_login, và ~/.profile, trong đó trật tự, và đọc và thực hiện lệnh từ cái đầu tiên mà tồn tại và là có thể đọc được. Tùy chọn --noprofile có thể được sử dụng khi vỏ được bắt đầu ức chế hành vi này.
...
Khi một vỏ tương tác đó không phải là một tên đăng nhập vỏ được khởi động, bash đọc và thực hiện lệnh từ /etc/bash.bashrc~/.bashrc, nếu những tập tin này tồn tại. Điều này có thể là bị ức chế bằng cách sử dụng tùy chọn --norc. Tùy chọn tệp --rcfile sẽ buộc bash để đọc và thực thi lệnh từ tệp thay vì /etc/bash.bashrc~/.bashrc.

Vì vậy, hãy xem /etc/profile hoặc /etc/bash.bashrc, những tệp này là đúng vị trí cho cài đặt chung. Đặt một cái gì đó như thế này trong họ để thiết lập một biến environement:

export MY_VAR=xxx 
+0

Lưu ý rằng trên các hệ thống Unix cổ điển, cả vỏ Bourne lẫn Korn cũng đọc/etc/profile - nó có lẽ là vị trí được sử dụng rộng rãi nhất cho môi trường hệ thống. Một số phiên bản của trình bao C nhìn vào /etc/csh.cshrc và /etc/csh.login cũng như các vị trí cho mỗi người dùng; những người khác không sử dụng bất kỳ tệp cài đặt môi trường hệ thống nào. –

+0

Tuyệt vời, chỉ là những gì tôi đang tìm kiếm như xa như thiết lập các env cho người dùng không đăng nhập vỏ. –

2

Mỗi quá trình chạy dưới Linux kernel nhận, môi trường độc đáo riêng của mình mà nó được thừa hưởng từ mẹ. Trong trường hợp này, cha hoặc mẹ sẽ là một shell (sinh sản một shell phụ), hoặc chương trình 'login' (trên một hệ thống điển hình).

Khi môi trường của từng quá trình được bảo vệ, không có cách nào để 'tiêm' biến môi trường cho mọi tiến trình đang chạy, vì vậy ngay cả khi bạn sửa đổi .rc/profile mặc định, nó sẽ không có hiệu lực cho đến mỗi quá trình thoát và tải lại các thiết lập khởi động của nó.

Tìm trong/etc/để sửa đổi các biến khởi động mặc định cho bất kỳ trình bao cụ thể nào. Chỉ cần nhận ra rằng người dùng có thể (và thường xuyên làm) thay đổi chúng trong cài đặt cá nhân của họ.

Unix được thiết kế để tuân theo người dùng, trong giới hạn.

NB: Bash không phải là chỉ vỏ trên hệ thống của bạn. Hãy chú ý cẩn thận đến liên kết tượng trưng/bin/sh thực sự trỏ đến. Trên nhiều hệ thống, điều này thực sự có thể là dash là (theo mặc định, không có yêu cầu đặc biệt) POSIXLY đúng. Do đó, bạn nên cẩn thận sửa đổi cả hai mặc định hoặc tập lệnh bắt đầu bằng/bin/sh sẽ không kế thừa giá trị mặc định chung của bạn. Tương tự, cẩn thận tránh cú pháp chỉ có bash hiểu khi chỉnh sửa cả hai, aka avoiding bashisms.

35

man 8 pam_env

man 5 pam_env.conf

Nếu tất cả các dịch vụ đăng nhập sử dụng PAM, và tất cả các dịch vụ đăng nhập có session required pam_env.so trong các tập tin tương ứng /etc/pam.d/* cấu hình của họ, sau đó tất cả các phiên đăng nhập sẽ có một số biến môi trường thiết lập theo quy định tại pam_env 's tập tin cấu hình.

Trên hầu hết các bản phân phối Linux hiện đại, đây là tất cả ở đó theo mặc định - chỉ cần thêm biến môi trường toàn cầu mong muốn của bạn vào /etc/security/pam_env.conf.

Tác phẩm này bất kể vỏ của người dùng và hoạt động đối với đăng nhập đồ họa (nếu xdm/kdm/gdm/lối vào/& hellip; được thiết lập như thế này).

+1

+1 bạn cũng cần phải khởi động lại sau khi thêm một biến trong pam_env.conf gây ra ngay lập tức trên bay $ echo $ variablename không hiển thị – YumYumYum

+5

Bạn không cần phải khởi động lại, bạn cần phải relog-in. (Không khởi động lại máy chủ quan trọng đối với tôi) –

+0

Điều này dường như không áp dụng cho bản phân phối của tôi, Mint 17.2. Các tập tin được cài đặt sẵn là hoàn toàn bình luận ra, và nếu tôi thêm một cái gì đó như 'echo foo>/home/me/bar' và khởi động lại (và đăng nhập lại), tập tin đó không được tạo ra. (Có lẽ một cách thanh lịch hơn để kiểm tra điều này, nhưng tôi muốn chắc chắn trước khi bình luận ở đây.) –

3

Sử dụng PAM là execellent.

# modify the display PAM 
$ cat /etc/security/pam_env.conf 
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py & 
# AFTER : $ python $abc/click.py & 
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY} 
abc DEFAULT=/var/tmp/myproject 
-3

Nếu bạn đang làm việc trên loại ubuntu lệnh này ~/.bashrc (nếu bạn đang sử dụng gedit bạn có thể gõ gedit ~/.bashrc) sau đó viết các biến môi trường mà bạn muốn để duy trì qua tất cả các phiên terminal ví dụ biến xuất khẩu = "2015"

+0

Câu hỏi nêu rõ "cho mọi người". ~/.bashrc sẽ chỉ được xuất khi người dùng cụ thể của bạn sử dụng trình bao. –

+0

Tôi có nghĩa là biến sẽ tiếp tục tồn tại cho mọi phiên đầu cuối cho người dùng có .bashrc bị ảnh hưởng. Tuy nhiên đối với sự tồn tại biến toàn cầu trên tất cả các thiết bị đầu cuối, người ta phải thêm biến toàn cục vào/etc/environment và cũng bắt đầu một phiên mới để các biến được phát hiện. – Hamfri

-2
  1. Tải jdk sử dụng wget
  2. xác định vị trí con đường java sử dụng $ mà java nó sẽ hiển thị cho bạn nơi JAVA là thực sự được lưu trữ tức/usr/lib/jvm/java-8-openjdk-amd64 // bin/java
  3. Sao chép đường dẫn trên i.e/usr/lib/jvm/java-8-openjdk-amd64/
  4. Bây giờ mở .bashrc sử dụng biên tập nano tức là nano .bashrc
  5. Thêm đường dẫn trong file .bashrc tức JAVA_HOME sử dụng cammand xuất khẩu và lưu các tập tin tức JAVA_HOME xuất khẩu =/usr/lib/jvm/java-8-openjdk-amd64/export PATH = $ JAVA_HOME/bin: $ PATH
  6. Run $ nguồn ~/.bashrc
  7. $ echo $ PATH

Đường dẫn của bạn được đặt

+0

Câu trả lời này không liên quan gì đến câu hỏi –

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