2011-03-09 40 views
5

Tôi là người dùng máy Mac.cách đặt biến môi trường cho người dùng root

Tôi muốn đặt PYTHONPATH env cho thư mục gốc. nên

$ sudo su - 
# vi ~/.profile 

và thêm vào tập tin 'xuất khẩu PYTHONPATH =/mypythonlib'

sau đó

# env 

tôi có thể thấy dòng này

PYTHONPATH=/Users/simpnet2/projects/meiji/src/hershey 

nhưng ..

khi tôi sử dụng lệnh sudo, canno t thấy rằng

$ sudo env 

.. không có PYTHONPATH

chương trình của tôi có để chạy với lệnh sudo và cần PYTHONPATH.

+0

Vui lòng đọc [cách định dạng câu hỏi trên SO] (http://stackoverflow.com/editing-help). –

Trả lời

6

Nếu bạn sử dụng sh try /etc/profile, hãy thử /etc/bashrc và nếu bạn sử dụng zsh hãy thử /etc/zshenv.

+4

một điều cần thêm ... nếu trên '' ubuntu'', bash thử ''/etc/bash.bashrc'' – Richard

2

Bạn nên thử sudo -i sẽ mô phỏng đăng nhập là root và nguồn ~root/.profile.

1

Kể từ 10.8.5, đặt câu lệnh môi trường của tôi trong đường dẫn .profile trong nhà của người dùng gốc (/ var/root) đã hoạt động. sau khi thoát khỏi bash và quay trở lại dấu nhắc người dùng root với 'su -', tôi có thể thấy đường dẫn mới của tôi, v.v. với lệnh 'env' cài đặt MacPorts của tôi.

 
MacBook-Pro:~ root# cat /var/root/.profile 
export MANPATH=/opt/local/share/man:$MANPATH 
export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
MacBook-Pro:~ root# which port 
/opt/local/bin/port 
5

Bạn có thể làm cho PYTHONPATH hiển thị để sudo chỉnh sửa tệp sudoers của bạn. Lưu ý bạn CHỈ nên làm điều này thông qua visudo as explained here.

+0

Câu trả lời hay nhất. Trên thực tế, chỉ có tác dụng đối với tôi. –

0

Trong trường hợp đăng nhập với tư cách người dùng bình thường và gọi "su - root", tôi thấy rằng bash của Mac OS 10.8.5 đã bỏ qua .profile và .bash_profile; Tôi không thể thay đổi $ PATH của root bằng cách chỉnh sửa các tệp đó. Công việc đã được chỉnh sửa/etc/đường dẫn là gì. Sau khi thoát khỏi vỏ gốc và nhập lại với "su - root" thì đường dẫn mới đã xuất hiện.

1

Vâng, trong hệ thống Linux khác, cũng đúng là 'sudo' không sử dụng biến môi trường cục bộ. Nhưng bạn có thể khai báo biến môi trường tạm thời cùng với lệnh 'sudo'.

Ví dụ, trong trường hợp của bạn, bạn có thể thêm 'PYTHONPATH =/mypythonlib' trong lệnh của bạn 'sudo env', và lệnh cuối cùng là:

sudo PYTHONPATH=/mypythonlib env 

Bạn cũng có thể đọc bài viết này: Using sudo. Bạn có thể thấy cách 'sudo' giữ hoặc bỏ qua các biến môi trường do người dùng định nghĩa.

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