Tôi muốn thêm một số thư mục vào $ PATH khi chạy sudo, đây là yêu cầu vĩnh viễn (bán), không phải thứ gì đó cần được thêm vào chính kịch bản lệnh . Tôi nhận thấy rằng Django đã quản lý để làm điều đó, ($ PATH của tôi khi chạy sudo là "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/django/django-trunk/django/bin ") - vậy làm thế nào nó làm điều đó?
Trả lời
Tôi nghĩ rằng điều này sẽ làm việc ra nếu bạn lưu nó trong /root/.bashrc:
export PATH=/www/foo:$PATH
tôi quên nếu nó PATH hoặc PYTHONPATH và nếu nó thực sự quan trọng, điều này được dựa trên .bashrc của người dùng của tôi:
export PYTHONPATH=/www/django:$PYTHONPATH
Bạn có thể đặt biến trong/etc/environment, sau đó sử dụng "sudo -i" để chạy tập lệnh (hoạt động trong ubuntu 10.10).
Đây là dòng trong file sudoers mà reset:
Defaults env_reset
Bạn có thể làm việc này bằng cách thêm PATH
-env_keeps
hoặc bằng cách thêm dòng này:
Defaults env_keep = "PATH"
EDIT : trung gian, bạn không tắt env_reset, bạn chỉ cần bỏ qua đường dẫn đặt lại
Hoặc bạn có thể xóa dòng vi phạm env_reset
vi phạm.
Thậm chí tốt hơn, mặc dù bạn có thể khai báo một secure_path
rằng sẽ thay thế PATH
khi sudo được điều hành:
Defaults secure_path="/bin:/usr/bin"
Bằng cách đó bạn có thể kiểm soát những gì thư mục cụ thể để đưa vào con đường.
Xin cảm ơn, người trung gian, điều này đã thực hiện thủ thuật. –
Không sao cả. Đừng quên chọn câu trả lời để người khác có thể biết nó đã được giải quyết :) –
+1 để giải quyết vấn đề của OP. –