Làm cách nào để đặt biến môi trường liên tục cho root?


40

Để tạo các biến môi trường liên tục, tôi thêm tệp script vào thư mục /etc/profile.d, ví dụ:

# kịch bản của tôi
xuất MY_VAR = var_value

Điều này hoạt động đúng cho người dùng hiện tại:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value

Bây giờ tôi cần các biến môi trường tương tự cho người dùng root, nhưng tập lệnh /etc/profile.d không hoạt động cho root:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value
alex @ alex-64: ~ $ sudo su
root @ alex-64: / home / alex # echo $ MY_VAR

root @ alex-64: / nhà / alex # 

Làm thế nào tôi có thể thiết lập các biến tương tự cho gốc?


2
Câu hỏi này về cách bảo tồn một biến cụ thể khỏi môi trường của người gọi khi chạy sudorất liên quan. (Nhưng nó không phải là một bản sao vì câu hỏi này là về cách tùy chỉnh môi trường của chính root .)
Eliah Kagan

Câu trả lời:


44

sudo thường không bảo tồn các biến môi trường cục bộ. Bạn nên sử dụng nó với công -Etắc để làm như vậy, tức là sudo -E susẽ bảo toàn $ MYVAR cho root.

Ngoài ra, để tạo các biến liên tục thực sự toàn hệ thống, bạn nên đặt chúng vào /etc/environment.


14
Không hoạt động, các biến / etc / môi trường không được đặt cho sudo
Frederic Yesid Peña Sánchez

3
@ FredericYesidPeñaSánchez nó đã làm cho tôi trên CentOS. Bạn không có kịch bản trong đó, bạn chỉ thực hiện các bài tập đơn giản trên mỗi dòng, tức làFOO=bar
iamyojimbo

10

Giống như quá trình bạn xác định biến môi trường của riêng mình, ví dụ bằng cách chỉnh sửa '~ / .bashrc', bạn có thể xác định biến môi trường của root bằng cách chỉnh sửa '/root/.bashrc'.


8

Defaults env_resettrong /etc/sudoerssẽ thiết lập lại root PATHđược xác định bởi /etc/environment.

Bạn có thể sửa đổi nó Defaults !env_resetđể vô hiệu hóa việc đặt lại hoặc thêm:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

Nếu tôi muốn sử dụng giải pháp thứ hai (có nghĩa là thêm đường dẫn đến safe_path), khóa là gì?! đường dẫn chỉ là giá trị. Tôi muốn thêm ANDROID_NDK vào các biến môi trường cho root. Vì vậy, bây giờ, tôi chỉ sử dụng cái đầu tiên (! Env_reset). Cảm ơn.
Dr.jacky
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.