2012-04-11 14 views
15

मैं एक ग्राहक $bash -x आदेश कर खोल स्क्रिप्ट में if बयान में -x की तरह अगर फाइल निष्पादन योग्य है देखने के लिए (या ksh -x आदेश, आदि) को देखा।बैश -x कमान

मेरा प्रश्न है: $bash -x कमांड क्या करता है?

मेरी व्याख्या मौजूदा खोल के भीतर एक नए बैश खोल में एक कमांड शुरू करना था, उसी वातावरण चर को विरासत में मिलाकर उसी उपयोगकर्ता द्वारा निष्पादित किया गया था।

अजीब बात मैं $ls नहीं बल्कि $bash -x ls, जो देने के कर सकते हैं:

(AIX 6 के तहत) /usr/bin/ls: /usr/bin/ls: cannot execute binary file

यह मेरे लिए एक रहस्य है क्यों त्रुटि है - अनुमान लगा यह की वजह से है एक विशेषाधिकार जिसका अर्थ है कि ऊपर मेरी धारणा सही नहीं है।

इसके अलावा, मुझे विश्वास है कि $bash ls और $bash -x ls एक ही चीज़ है (-x "execute" के लिए)?

किसी भी टिप्पणी की बहुत सराहना की जाती है।

चीयर्स!

+5

डीबग मोड (-x) सक्षम के साथ एक बैश कमांड निष्पादित करने के लिए, 'bash -x -c your_command' – Alex

+1

RTFM का उपयोग करें! जे/के/10char – KurzedMetal

+0

संक्षिप्त उत्तर के लिए धन्यवाद एलेक्स, bash -x -c ls जो आपने वर्णित किया है। तो, "$ bash -x कमांड देखने के लिए कि फ़ाइल निष्पादन योग्य है या नहीं" तो WRONG है :) बहुत बहुत धन्यवाद! – Khiet

उत्तर

29

-x विकल्प डीबग मोड में एक बाश खोल शुरू करता है। आप अपने आदेश/स्क्रिप्ट को संसाधित करने के तरीके के बारे में सभी विवरण देख सकते हैं। अगर आपकी स्क्रिप्ट ऐसा नहीं करती है तो आप कुछ बग्स ढूंढने का एक अच्छा तरीका है यदि आप

और जैसा कि ऊपर दिए गए टिप्पणी में एलेक्स ने कहा था। बीएएसएच में कमांड चलाने के लिए, आपको -c विकल्प bash -x -c ls जैसे विकल्प का उपयोग करना होगा।

देखें man bash या ऑनलाइन मैनुअल, अधिक जानकारी के लिए invoking Bash और the set builtin command पर विशेष रूप से भागों:

एकल वर्ण सेट builtin (देखें सेट अंतर्निहित) के साथ प्रयोग किया विकल्पों में से सभी के रूप में इस्तेमाल किया जा सकता विकल्प जब खोल लगाया जाता है।

-x आदेशों के लिए, कमांड, केस कमांड, चयन आदेश, और अंकगणित के लिए सरल आदेशों का एक निशान मुद्रित करें और उनके तर्क या संबंधित शब्द सूचियों को विस्तारित करने के बाद और निष्पादित होने से पहले प्रिंट करें। पीएस 4 वैरिएबल का मान विस्तारित किया गया है और परिणामी मान कमांड और उसके विस्तारित तर्कों से पहले मुद्रित किया जाता है।

+0

धन्यवाद टॉमस, हमारे वीएम पर बैश के लिए मैन इंस्टॉल नहीं है, लेकिन अन्यथा वास्तव में यह सब कुछ कहता है; धन्यवाद (धन्यवाद) इस तरह के एक त्वरित उत्तर के लिए सभी के लिए, बहुत सराहना की! – Khiet

+0

@ किटेट आपका स्वागत है। अगर आपके पास मैन्युअल स्थापित नहीं है, तो Google में 'मैन बाश' टाइप करें और पहला लिंक आमतौर पर मैन्युअल पृष्ठ है :) – user219882

+0

'bash | grep "\ -x" 'मुझे शून्य रेखाएं देता है ... लेकिन यह काम करता है। –

0
  • bash -x <file> प्रत्येक आदेश की ट्रेसिंग के साथ स्क्रिप्ट <file> चलाती है या <file> निष्पादित

  • परीक्षण वर्तमान उपयोगकर्ता के लिए अनुमतियाँ निष्पादित किया है।

ऐसा प्रतीत होता है कि आपने इन दोनों को झुका दिया है।

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