मैं एक प्रतिलिपि प्रस्तुत करने योग्य समस्या है:
- बैश में मेरा पैथ सेट करें
- शुरू tmux द्वारा
tmux
,tmux attach
या किसी भी प्रकार - $ PATH की प्रतिध्वनि करें और इसे समान घटकों के साथ देखें लेकिन अलग-अलग क्रम में
इसे कैसे रोका जाए? इसे क्या समझाता है?
मैं एक प्रतिलिपि प्रस्तुत करने योग्य समस्या है:
tmux
, tmux attach
या किसी भी प्रकारइसे कैसे रोका जाए? इसे क्या समझाता है?
जवाबों:
यदि आप एक मैक पर हैं और सोच रहे हैं कि /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
जब आप tmux चलाते हैं, तो PATH के लिए पूर्वनिर्धारित क्यों रहता है, यह पथ_हेलर नामक एक उपयोगिता के कारण है जो आपकी /etc/profile
फ़ाइल से चलाया जाता है ।
आप आसानी से tmux (या यों कहें, bash) को स्रोत के लिए नहीं मना सकते /etc/profile
(किसी कारण से tmux हमेशा एक लॉगिन शेल के रूप में चलता है, जिसका अर्थ है / etc / प्रोफ़ाइल पढ़ी जाएगी), लेकिन आप यह सुनिश्चित कर सकते हैं कि path_helter डॉन के प्रभाव अपने पेट के साथ पेंच।
चाल यह सुनिश्चित करने के लिए है कि पथ_हेलपर चलने से पहले पथ खाली है। मेरी ~/.bash_profile
फ़ाइल में मेरे पास यह है:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Path_helper के क्रियान्वयन से पहले PATH को साफ़ करने से यह आपके (पहले) चुने गए PATH को डिफ़ॉल्ट PATH को तैयार करने से रोकेगा, और आपके बाकी व्यक्तिगत बैश सेटअप स्क्रिप्ट्स (आगे नीचे .bash_profile
, या .bashrc
यदि आपने इसे खट्टा किया है .bash_profile
) से सेटअप करने की अनुमति देगा तदनुसार पाथे।
आशा है कि समझ में आता है ...
-f
के साथ -e
है, लेकिन मैं व्यक्तिगत रूप से कोशिश करते हैं और एक स्क्रिप्ट है कि चलाने हो जाता है जब मैं के लिए लॉग इन जब तक कि मैं जाँच की थी यह नहीं था से एक फ़ाइल स्रोत नहीं होता। मैं हालांकि विभिन्न मशीनों (और ऑपरेटिंग सिस्टम) के बहुत सारे पर अपनी बैश स्क्रिप्ट का फिर से उपयोग करने के लिए करता हूं, इसलिए मुझे यह सुनिश्चित करना पसंद है कि वे बुलेट प्रूफ हैं। मैं कल्पना कर सकता हूं कि कुछ अन्य यूनिक्स संस्करण इसे कुछ और कह सकते हैं।
नहीं; छँटाई $PATH
करना एक बहुत ही पागल काम होगा, क्योंकि कई सिस्टम इसके उपयोगकर्ता-सेट आदेश पर निर्भर करते हैं।
हालाँकि, tmux आपके शेल को "लॉगिन" मोड में शुरू करता है, जिससे फिर से~/.profile
खटास आ जाती है । इसका मतलब है कि अगर आपके पास उस फ़ाइल में कुछ है , तो इसे फिर से किया जाएगा , जिसके परिणामस्वरूप $ PATH शामिल होगा । इससे बचने के लिए, आप दूसरे चर का उपयोग कर सकते हैं:PATH=/my/dir:/another/dir:$PATH
/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
if [ -n "$TMUX" ]
स्वयं एक खंड के पीछे छिपाया है , लेकिन मैं सोच रहा था -[ -f /etc/profile ]
वास्तव में कितना महत्वपूर्ण है ? क्या यह मान लेना सुरक्षित नहीं है कि/etc/profile
हमेशा एक नियमित फ़ाइल होती है?