2009-10-04 4 views
6

मैं सूडो चलाने के दौरान $ PATH में कुछ निर्देशिका जोड़ना चाहता हूं, यह एक (अर्ध) स्थायी आवश्यकता है, ऐसा कुछ नहीं जिसे स्क्रिप्ट में स्वयं जोड़ा जाना चाहिए । मैंने देखा कि Django इसे करने में कामयाब रहा है, (सूडो चलाने पर मेरा $ पाथ "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/django/django-trunk/django/bin ") - तो यह कैसे किया?

उत्तर

6

मुझे लगता है कि यह बाहर काम करना चाहिए अगर आप इसे /root/.bashrc में सहेजें:

export PATH=/www/foo:$PATH 

मैं भूल जाते हैं अगर यह पथ या PYTHONPATH है और अगर यह वास्तव में मायने रखती है, यह मेरा उपयोगकर्ता के .bashrc पर आधारित है:

export PYTHONPATH=/www/django:$PYTHONPATH 
+0

धन्यवाद, मध्यस्थ, यह चाल है। –

+0

कोई समस्या नहीं है। उत्तर का चयन करना न भूलें ताकि अन्य जान सकें कि इसे हल किया गया है :) ओपी की समस्या को हल करने के लिए –

+0

+1। –

3

आप/etc/वातावरण में चर सेट कर सकते हैं, और उसके बाद का उपयोग करें "sudo मैं" स्क्रिप्ट (ubuntu 10.10 में काम करता है) को चलाने के लिए।

17

यह sudoers फाइल में लाइन है कि रीसेट करता है:

Defaults env_reset

आप इस के आसपास env_keeps करने के लिए PATH जोड़कर या इस पंक्ति जोड़कर काम कर सकते हैं:

Defaults env_keep = "PATH"

संपादित करें : मध्यस्थ, आप env_reset को अक्षम नहीं करते हैं, आप बस पथ रीसेट

या आप अपमानजनक env_reset लाइन को हटा सकते हैं।

हालांकि और भी बेहतर, आप एक secure_path कि PATH का स्थान ले लेगा जब sudo चलाया जाता है की घोषणा कर सकते हैं:

Defaults secure_path="/bin:/usr/bin"

इस तरह आप क्या विशिष्ट निर्देशिका पथ में शामिल करने के लिए नियंत्रित कर सकते हैं।

+1

यह स्वीकार्य उत्तर होना चाहिए। आप रूट की पहुंच को खोलने के बजाय सूडोयर तंत्र के साथ आवश्यक पथों तक पहुंच को सीमित कर सकते हैं। – Alkaline

+0

'सूडो विसुडो' के माध्यम से सूडोर्स फ़ाइल तक पहुंचें – fiat

संबंधित मुद्दे