मुझे $ पीएटीएच में एक कमांड के साथ एक विचित्र प्रतीत होने वाला खोल मुद्दा मिला है, जो शेल (ksh, लिनक्स पर चल रहा है) कायरता से इनकार करने के लिए प्रकट होता है। कमांड को पूरी तरह से योग्य किए बिना, मुझे मिलता है:
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
लेकिन फ़ाइल को किसके द्वारा पाया जा सकता है:
# which mycommand
/home/me/mydir/admbin/mycommand
मैं $ PATH में स्पष्ट रूप से उस निर्देशिका को देख रहा हूं:
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
उस स्थान पर निर्गमन सामान्य लगता है:
# file /home/me/mydir/admbin/mycommand
/home/me/mydir/admbin/mycommand: setuid setgid ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), not stripped
# ls -l mycommand
-r-sr-s--- 1 me mygroup 97892 2012-04-11 18:01 mycommand
और अगर मैं इसे पूरी तरह से योग्य पथ का उपयोग करके स्पष्ट रूप से चलाता हूं:
# /home/me/mydir/admbin/mycommand
मैं अपेक्षित आउटपुट देख रहा हूं। कुछ यहाँ निश्चित रूप से खोल को भ्रमित कर रहा है, लेकिन मैं एक नुकसान में हूं कि यह क्या हो सकता है?
संपादित करें: यह देखना कि एक समान प्रश्न कैसा दिखता है: बाइनरी एक पथ के साथ चलने पर निष्पादित नहीं होगी। उदा> ./ प्रोग्राम काम नहीं करेगा लेकिन> प्रोग्राम ठीक काम करता है
मैंने अपने $ PATH में इस तरह के एक से अधिक कमांड के लिए भी परीक्षण किया, लेकिन केवल एक ही खोजें:
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2:
आज सुबह तक, समस्या गायब हो गई है , और मैं अब निष्पादन योग्य निष्पादित करने में सक्षम हूं।
लॉगआउट और लॉगिन करने के सुझाव को मान्य करने के बारे में सोचा जा सकता है, लेकिन मैंने कल रात बिना सफलता के किया। उस लॉगआउट / लॉग इन को 'हैश-आर' कमांड चलाने के बराबर किया जाना चाहिए जो सुझाया गया था (जो fwiw भी ksh buildin प्रतीत होता है, न कि सिर्फ एक bash बिलिन)।
कुछ जवाबों के जवाब में:
यह एक निष्पादन योग्य स्क्रिप्ट नहीं है (फ़ाइल कमांड आउटपुट में ELF संदर्भ देखें)।
मुझे नहीं लगता कि किसी स्ट्रीम ने मदद की होगी। यह पूरी तरह से योग्य निष्पादित करने के लिए आदेश देने के लिए समाप्त होता है। मुझे लगता है कि मैं वर्तमान शेल पर एक स्ट्रेस अटैचमेंट कर सकता था, लेकिन चूंकि मैं अब रिप्रो नहीं कर सकता, इसलिए यह कोशिश करने का कोई मतलब नहीं है।
$ PATH में कोई अर्धविराम नहीं थे। चूँकि मैं अब रिप्रोज़ नहीं कर सकता, इसलिए मैं इस सवाल को पूरे $ पैठ के साथ जोड़ नहीं सकता।
जैसा कि सुझाव दिया गया था, एक और शेल (यानी बैश) आजमा रहा हूं। चली गई समस्या के साथ, मुझे अब पता नहीं चलेगा कि क्या मदद मिलेगी।
मुझे यह भी सुझाव दिया गया था कि वह निर्देशिका अनुमतियों की जाँच कर रहा था। ऐसा करने से प्रत्येक निर्देशिका के लिए जो मैं देख रहा हूं:
# ls -ld $HOME $HOME/mydir $HOME/mydir/admbin
drwxr-xr-x 10 me root 4096 2012-04-12 12:20 /home/me
drwxrwsr-t 22 me mygroup 4096 2012-04-12 12:04 /home/me/mydir
drwxr-sr-x 2 me mygroup 4096 2012-04-12 12:04 /home/me/mydir/admbin
$ होम निर्देशिका स्वामित्व गड़बड़ है (रूट समूह नहीं होना चाहिए)। यह अन्य मुद्दों का कारण बन सकता है, लेकिन मैं यह नहीं देखता कि यह कैसे होता है।