क्या है $PATH
?
मेरे पास कमांड / प्रोग्राम कैसे हो सकते हैं जो केवल मेरे लिए उपलब्ध हैं?
मैंने इस पथ को ~/bin
पहले उल्लेख किया है, लेकिन इसका उपयोग किस लिए किया जाता है, और मैं इसका उपयोग कैसे करूं?
क्या है $PATH
?
मेरे पास कमांड / प्रोग्राम कैसे हो सकते हैं जो केवल मेरे लिए उपलब्ध हैं?
मैंने इस पथ को ~/bin
पहले उल्लेख किया है, लेकिन इसका उपयोग किस लिए किया जाता है, और मैं इसका उपयोग कैसे करूं?
जवाबों:
$ PATH एक वातावरण वैरिएबल है जिसका उपयोग कमांड देखने के लिए किया जाता है। ~ आपकी घर निर्देशिका है, इसलिए ~ / बिन होगा / घर / उपयोगकर्ता / बिन; यह एक सामान्य निर्देशिका है।
जब आप एक शेल में "एलएस" चलाते हैं, उदाहरण के लिए, आप वास्तव में / बिन / एलएस कार्यक्रम चलाते हैं; आपके सिस्टम कॉन्फ़िगरेशन के आधार पर सटीक स्थान भिन्न हो सकता है। ऐसा इसलिए होता है क्योंकि / बिन आपके $ पेट में होता है।
पथ को देखने और यह जानने के लिए कि कोई विशेष कमांड कहाँ स्थित है:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
अपनी निजी बिन निर्देशिका होने के लिए, आपको इसे केवल पथ में जोड़ना होगा। नीचे लाइनों को शामिल करने के लिए ~ / .profile (एक छिपी हुई फ़ाइल) को संपादित करके ऐसा करें। यदि लाइनों पर टिप्पणी की जाती है, तो आपको केवल उन्हें अनलॉक्ड करना होगा; अगर वे पहले से ही वहाँ हैं, तो आप सब तैयार हैं!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
अब आपको अपनी ~ / बिन निर्देशिका बनाने की आवश्यकता है और, क्योंकि .profile को लॉगिन पर चलाया जाता है और केवल ~ / बिन को जोड़ा जाता है यदि यह उस समय मौजूद है, तो आपको अपडेट किए गए पथ को देखने के लिए फिर से लॉगिन करने की आवश्यकता है।
आइए इसका परीक्षण करें:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
type
देखने के लिए उपयोग करना अधिक उपयोगी होता है कि शेल द्वारा वास्तविक कमांड कैसे हल किया जाएगा; उदा: which echo
और type echo
विभिन्न चीजों की रिपोर्ट करेगा, which
'/ bin / echo' लौटाता है , लेकिन 'type' रिटर्न देता है कि यह शेल बिल्डिन है, जो शेल '/ bin' में फाइल के ऊपर पसंद करेगा।
which
बेहतर तरीके से type
या command
इंटरैक्टिव गोले में बदल दिया गया है , और यह लिपियों में पूरी तरह से बेकार है।
$HOME
परिवर्तनशील $PATH
नहीं है, अर्थात किसी को ~
इसके बजाय साइन का उपयोग करना होगा।
के बारे में ~/bin
और केवल अपने उपयोगकर्ता के लिए उपलब्ध आदेशों / कार्यक्रमों
हाल के उबंटू संस्करणों में ~/bin
निर्देशिका शामिल है आपके $PATH
, लेकिन केवल अगर ~/bin
निर्देशिका मौजूद है।
यदि यह मौजूद नहीं है:
सुनिश्चित करें कि आपके पास ~/.profile
निम्नलिखित श्लोक हैं (डिफ़ॉल्ट ~/.profile
पहले से ही है):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
~/bin
निर्देशिका बनाएँ :
mkdir -p ~/bin
या तो अपने कंप्यूटर को रिबूट करें, या फिर से पढ़ने के लिए बैश करने के लिए मजबूर करें ~/.profile
:
exec -l bash
exec -l bash
" टिप के लिए धन्यवाद । -l
झंडा क्या करता है? मुझे इसमें कोई स्पष्टीकरण नहीं मिल रहा है man exec
।
exec -l
लॉगिन शेल [ wiki.bash-hackers.org/commands/builtin/exec] के रूप में बैश निष्पादित करेगा । संक्षेप में, यह बैश को फिर से पढ़ने /etc/profile
और करने के लिए मजबूर करता है ~/.profile
। सिर्फ दौड़ने exec bash
से ही फिर से पढ़ना होगा ~/.bashrc
।