बैश, हमेशा रास्ते के हिस्से के रूप में $ PWD की जाँच करें?


15

बैकग्राउंड: मेरे एक सहकर्मी, जो लिनक्स बैकग्राउंड से नहीं आते हैं, ने मुझे ./कुछ कमांड्स और अन्य लोगों से पहले इस्तेमाल करने के बारे में पूछा , इसलिए मैंने उन्हें समझाया कि कैसे PATHकाम किया जाता है और बायनेरी को कैसे चुना जाता है। उनकी प्रतिक्रिया थी कि यह गूंगा था और वह केवल ./आदेशों से पहले टाइप करने की आवश्यकता नहीं चाहता था ।

प्रश्न: क्या शेल के व्यवहार को आसानी से संशोधित करने का एक तरीका है जो $PWDहमेशा पहले आइटम पर है PATH?


गूंगा यह हो सकता है (या नहीं हो सकता है), लेकिन हर वातावरण में यह quirks है, और यह एक विशिष्ट यूनिक्स खोल quirk है।
रॉनजॉन

12
यह एक सुरक्षा उपाय है। गोले इस्तेमाल किया डिफ़ॉल्ट रूप से यह करने के लिए (लगता है 1970 के दशक), और बहु उपयोगकर्ता सिस्टम व्यापक रूप से यह के कारण हमला किया गया।
चार्ल्स डफी

3
उनकी प्रतिक्रिया थी कि यह गूंगा था : कहा जाता है कि इस विषय पर सहकर्मी को स्वयं को शिक्षित करने की आवश्यकता है। यह ऑफ-द-कफ उत्तर PHB- शैली की प्रतिक्रिया प्रदर्शित करता है : अंतर्निहित प्रणाली की कोई समझ या प्रशंसा नहीं।
बादल

2
क्यों न केवल बायनेरिज़ को इसमें ड्रॉप करें ~/binऔर इसका हिस्सा बनाएं PATH? यह चीजों को व्यवस्थित भी रखता है।
सर्गी कोलोडियाज़नी

3
विंडोज पर @Ziazis, वर्तमान निर्देशिका को माना जाता है चाहे वह इसका हिस्सा हो PATH(जो इस तरह के विचारों का सामान्य स्रोत है)।
स्टीफन किट

जवाबों:


55

यदि आप वास्तव में चाहते हैं, तो आप .अपने रास्ते पर चलकर ऐसा कर सकते हैं :

export PATH=".:$PATH"

हालांकि, यह एक बुरा विचार है, क्योंकि इसका मतलब है कि आपका शेल दूसरों की प्राथमिकता में वर्तमान निर्देशिका में किसी भी कमांड को ले जाएगा। यदि कोई (या कुछ प्रोग्राम) lsएक निर्देशिका में एक दुर्भावनापूर्ण आदेश ड्रॉप करता है जिसका आप अक्सर उपयोग करते हैं, तो आप परेशानी में हैं ...


13
यह एक उत्कृष्ट बिंदु है, हालांकि शायद यह स्थानांतरित करने के लिए पर्याप्त होगा। पथ के अंत में फिर PATH = "$ PATH:" निर्यात करें।
क्रिस्टोफ

12
वास्तव में मुझे याद है कि .आपकी शुरुआत में PATHसामान्य उपयोगकर्ताओं के लिए डिफ़ॉल्ट था (यदि मैंने एचपी-यूएक्स पर "सैम" के साथ उपयोगकर्ता बनाया है, तो कम से कम; मैं पुराने सनोस के बारे में निश्चित नहीं हूं)। बाद में सुरक्षा कारणों से इस डिफ़ॉल्ट को हटा दिया गया था। यदि आपके पास .अपने अंतिम आइटम के रूप में है PATH, तब भी कोई व्यक्ति टाइपो के लिए उम्मीद कर सकता है।
फिलिपोस

6
@Pippippos, हाँ /tmp/slऐसे PATH के साथ उपयोगकर्ताओं को लक्षित करने के लिए कुख्यात शरारत लिपियों की तरह। डेबियन और डेरिवेटिव पर, slपैकेज को स्थापित करने के लिए यह अनुमान लगाने के लिए कि आप कितनी बार slजगह में टाइप करते हैं ls
स्टीफन चेज़लस

नहीं, यह एक बुरा विचार नहीं है, यह एक अच्छा है, खासकर यदि आप एक डेवलपर हैं। बेशक, एक ऐसा वातावरण रखना जहां दुर्भावनापूर्ण आदेशों में कोई भी गिरता नहीं है, यह एक अच्छा विचार है।
jamesqf

4
@jamesqf, वास्तव में, ./जब आप वर्तमान निर्देशिका में आदेशों को कॉल करना चाहते हैं , तो इसे टाइप करना एक अच्छा विचार है । या, यदि आपके सामान्य वर्तमान निर्देशिका है /project/under/development/bin, तो जोड़ने कि आपके लिए PATH। यह आपके डेवलपर उपयोग के मामले को हल करता है। .अपनी शुरुआत में लाना PATHएक बुरा विचार है, अवधि।
वाइल्डकार्ड 19

14

हालाँकि यह आपके सवाल का सीधा जवाब नहीं है, लेकिन सबसे अच्छा अभ्यास यह होगा कि binआप अपने घर की निर्देशिका में एक निर्देशिका बनाएँ /home/user/bin:

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

अपनी व्यक्तिगत स्क्रिप्ट वहाँ रख दिया है। PATHआपको यह परिभाषित करने और बिना आपकी व्यक्तिगत आलेख निष्पादित में चल किया जाएगा .की जरूरत है।


0

आपके पास होना चाहिए। आपके पैट चर की शुरुआत में:

export PATH=".:$PATH"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.