2010-06-27 8 views
10

में काम नहीं कर रहा निम्न स्क्रिप्टकुटिया लाइन आर स्क्रिप्ट

#!/usr/bin/Rscript 

print ("shebang works") 

shebang.r नामक एक फाइल में है। जब मैं का उपयोग कर कमांड लाइन से चलाने Rscript यह

$ Rscript shebang.r 

काम करता है लेकिन यह काम नहीं करता है जब मैं अकेला

$ shebang.r 

कमांड लाइन से चलाते हैं। shebang.r कमांड नहीं मिला।

अगर मैं टाइप करें (अन्य उदाहरण के आधार पर मैंने देखा है)

$ ./shebang.r 

मैं अनुमति नहीं दी मिलता है।

हाँ, Rscript/usr/bin निर्देशिका

उत्तर

12

में स्थित है फ़ाइल निष्पादन करें।

chmod 755 shebang.r 
+0

यह काम किया! क्या 755 के अलावा अन्य विकल्प हैं जो काम करते हैं? मैं अपने लैपटॉप पर कमांड को तेज करने की योजना बना रहा हूं। धन्यवाद। – Milktrader

+0

@ मिल्कट्रैडर: यह आवश्यक है कि फ़ाइल चलाने की कोशिश करने वाले व्यक्ति पर निष्पादन अनुमति हो। "चोउन' के लिए मैन पेज और" लांग प्रारूप "(यानी 'ls -l') पर' ls' मैन पेज के अनुभाग को पढ़ें। – dmckee

+0

कुछ भी जो मालिक के लिए निष्पादन योग्य बिट सेट करता है, तब तक काम करना चाहिए जब तक कि आप फ़ाइल के स्वामी न हों। न्यूनतम, आपको '100' की आवश्यकता है, लेकिन फिर आप इसे अब पढ़ने या लिखने में सक्षम नहीं होंगे। आप शायद कम से कम '700' चाहते हैं, जो मालिक को अनुमतियों को पढ़ने, लिखने और निष्पादित करने देता है, लेकिन सभी को अनुमति देता है (रूट को छोड़कर)। – Thomas

2

जोएर्ड के जवाब के अलावा ... केवल वातावरण चर PATH में सूचीबद्ध निर्देशिका आदेशों को चलाने के लिए निरीक्षण किया जाता है। यदि . के रूप में जाना जाने वाला वर्तमान निर्देशिका PATH में नहीं है, तो आपको ./shebang.r (केवल shebang.r के विपरीत) टाइप करने की आवश्यकता है।

PATH का निरीक्षण करने के लिए, प्रकार

echo $PATH 

PATH को . जोड़ने के लिए, प्रकार

export PATH="$PATH:." 

आप इसे अपने आप ही हो यदि आप एक नया खोल खोल बनाने के लिए अपने ~/.bashrc को यह लाइन जोड़ सकते हैं।

+0

हाँ, मुझे इसे काम करने के लिए ./shebang.r का उपयोग करने की आवश्यकता है। मुझे बताया गया कि जोड़ना। पीएटीएच वैरिएबल में सुरक्षा जोखिम शुरू होता है, लेकिन मैं इसे वैसे भी कर सकता हूं क्योंकि यह मेरा निजी कंप्यूटर है और ऐसा नहीं है कि मेरे पास मिसाइल लॉन्च कोड हैं। – Milktrader

+2

सुरक्षा जोखिम यह है कि आप ऐसी निर्देशिका में हो सकते हैं जहां कोई और कहता है, 'ls' नामक एक प्रोग्राम जिसे आप गलती से निष्पादित कर सकते हैं। यदि ''' आपके 'पथ' में रहता है, तो जोखिम बहुत छोटा होता है, क्योंकि सामान्य '/ bin/ls' प्राथमिकता लेता है, और' .' केवल एक अनचाहे कमांड के मामले में खोजा जाएगा। फिर भी, मैं रूट उपयोगकर्ता के 'पथ 'में' .' जोड़ने के खिलाफ अनुशंसा करता हूं, क्योंकि संभावित क्षति अधिक है। और देखें https://listman.redhat.com/archives/redhat-list/1999-July/msg01969.html – Thomas