2009-03-19 8 views
5

मैं स्थानीय यूनिक्स सर्वर बॉक्स से कनेक्ट होने पर कुछ निष्पादन योग्य चला रहा हूं।वर्तमान प्रक्रिया/निष्पादन योग्य कहां से पथ ढूंढें?

कहें, मैं निष्पादन योग्य 'एबीसी' चलाने की कोशिश कर रहा हूं। अब सर्वर ने 'abc' के लिए उपनाम प्रदान किया होगा .. मुझे इस पथ के बारे में कैसे पता चलेगा? जैसा कि, अगर मैं 'एबीसी' का आह्वान करता हूं, तो यह वास्तव में इसे कह सकता है, कह सकता है,/opt/corp/xyz/abc .. मुझे यह कैसे पता चलेगा कि मैं किस मार्ग को निष्पादन योग्य कह रहा हूं?

तरह से मैं HP-UX पर चल रहा हूँ द्वारा: डी

उत्तर

10

"which abc" जो दिखाने के लिए abc आप उपनाम

शायद "गूंज सूची

या" alias "बुला लिया जाएगा $ 0 "एक स्क्रिप्ट के अंदर से, या argv [0] कुछ अन्य तरीके से पुनर्प्राप्त।

2

क्या एचपी-यूएक्स में "कौन सा" आदेश है? चलाएँ:

which abc 

तुम्हारे पास है, तो which आदेश आपको बता देंगे जो एबीसी कार्यक्रम अपने $PATH से चलेंगे।

4

आप पथ वातावरण चर का उपयोग कर चला रहे हैं, आप की कोशिश कर सकते:

$ which abc

या

$ whereis abc

अगर वहाँ आदेश के लिए एक प्रतीकात्मक कड़ी है और आप जानना चाहता हूँ " वास्तविक " लक्ष्य, आप कुछ का उपयोग कर सकते हैं:

 
$ readlink /opt/corp/xyz/abc 

मैं अभी मेरे सामने एक HPUX सिस्टम के लिए उपयोग नहीं है, लेकिन यह काम करना चाहिए: आदेश एक उपनाम पर आधारित है

$ ls -l /opt/local/bin/wish 
lrwxr-xr-x 1 root admin 22 Feb 3 21:56 /opt/local/bin/[email protected] -> /opt/local/bin/wish8.5 
$ readlink /opt/local/bin/wish 
/opt/local/bin/wish8.5 

हैं, तो निम्नलिखित उर्फ ​​परिभाषा का पता चलता है।

 
$ alias abc 

आपके सिस्टम को कॉन्फ़िगर करने के तरीके के आधार पर, उपरोक्त आदेशों को आपके प्रश्न के कई भिन्नताओं के उत्तर प्रदान करना चाहिए।

पर्ल में

:

$running_script = $0; 
अजगर से

, एक कमांड लाइन टर्मिनल से इतना How to get filename of the __main__ module in Python?

1

देखें:

$ जो एबीसी

/opt/कॉर्प/xyz/abc

2

धन्यवाद सब! 'कौन सा' कमांड था जिसके बाद मैं था! मैं अब खुद को चेहरे पर लापरवाही कर रहा हूं क्योंकि मुझे पहले से ही कमांड (उबंटू में) पता था .. और यह एचपी-यूएक्स में एक आकर्षण की तरह काम करता है!

संपादित करें: पॉपसीएन द्वारा सुझाए गए 'जहांिस' और भी उचित है! Thanx बहुत आदमी!

+0

यदि आप मेरा पसंद है, आगे जाना है और यह +1, और संतोषजनक हैं तो आप इसे अपने प्रश्न के उत्तर के रूप में चिह्नित करें। मूल पोस्टर से "उत्तर" के बजाय, आप आमतौर पर SO पर क्या देखेंगे। – popcnt

1

यूनिक्स पर एक स्क्रिप्ट का पथ प्राप्त करने के लिए सही तरीका है:

dir=$(cd $(dirname "$0"); pwd) 

पृष्ठभूमि: $ 0 फ़ाइल नाम + वर्तमान निर्देशिका के लिए स्क्रिप्ट रिश्तेदार का मार्ग है। यह पूर्ण (/...) या रिश्तेदार (../, dir/...) हो सकता है। तो $(dirname "$0") पथ लौटाता है (फ़ाइल नाम के बिना)। उद्धरण मन; "$ 0" में रिक्त स्थान और अन्य अजीब सामान हो सकते हैं।

हम उस निर्देशिका में cd और pwd पूर्ण पथ लौटाएंगे जहां हम समाप्त होते हैं।

ksh और bash के लिए काम करता है।

एक सी प्रोग्राम में, आपको argv[0] जांचना चाहिए। मुझे यकीन नहीं है कि खोल वहां पूरा रास्ता रखेगा या नहीं। आप परेशानी है, तो मैं एक छोटे से स्क्रिप्ट जो पर्यावरण को तैयार करता है में अपने निष्पादन लपेट और उसके बाद के साथ अपने निष्पादन आह्वान करने के लिए सुझाव देते हैं:

exec "$dir/"exe "[email protected]" 
संबंधित मुद्दे