मेरे तीर कुंजी श में क्यों काम नहीं करते?


16

मैंने हाल ही में उबंटू स्थापित किया है और जब मैं टर्मिनल पर श को चलाता हूं तो मेरी तीर कुंजी काम नहीं करती है इसलिए मैं अपने कॉल इतिहास के माध्यम से नहीं जा सकता हूं या जो भी मैं टाइप कर रहा हूं उसे संपादित कर सकता हूं। यह सिर्फ अजीब पात्रों के रूप में बाहर आता है^[[A

लॉगिन शेल बैश है और यह ठीक काम करता है लेकिन जैसे ही मैं श में स्विच करता हूं, वे काम नहीं करते हैं।

मैं इसे कैसे ठीक करूं?


2
आप श में क्यों स्विच करते हैं?
oenone

2
@ ओयोन क्यों करता है, ओपी पर स्विच करने से कोई फर्क क्यों नहीं पड़ता sh? निश्चित रूप से वह क्यों करता है इसका कारण इस तथ्य के लिए अप्रासंगिक है कि यह समस्याग्रस्त है।
एगी हैमर्थीफ़

जवाबों:


15

/bin/sh(पानी का छींटा) खोल एक POSIX अनुरूप, कम कार्यक्षमता खोल अधिक प्रणाली बूट करने के लिए कुशल (छोटे) हो रहा है। उस भाग के रूप में, इतिहास और उन्नत कमांड-लाइन संपादन शामिल नहीं हैं। यह एक इंटरैक्टिव शेल के रूप में की तुलना में सख्त POSIX स्क्रिप्टिंग के लिए अधिक उपयुक्त है। यह विचार है कि 'लॉगिन' शेल डिफ़ॉल्ट रूप से बैश होगा, लेकिन बूट सिस्टम डैश का उपयोग करेगा। उबंटू 11.04 में मैन पेज से पता चलता है कि डैश में इतिहास और कमांड-लाइन संपादन है, लेकिन कार्यक्रम में ये विशेषताएं नहीं हैं। आधार निष्पादन के आकार पर एक नज़र डालें।

$ ls -l /bin/*ash /bin/sh
-rwxr-xr-x 1 root root 822420 Mar 31 15:26 /bin/bash
-rwxr-xr-x 1 root root  83848 Nov 15  2010 /bin/dash
lrwxrwxrwx 1 root root      4 May 17 21:15 /bin/rbash -> bash
lrwxrwxrwx 1 root root      4 May 17 21:15 /bin/sh -> dash
$ strings /bin/bash | egrep -ci 'fc|hist'
181
$ strings /bin/dash | egrep -ci 'fs|hist'
1

कोशिश करें कि दौड़ने की आदत डालें $SHELLया bashसिर्फ के बजाय sh


8

डैश के मामले /bin/shमें , इसे संकलन से पहले कॉन्फ़िगर किया जाना है । अन्यथा आप अभी भी शेल में चल सकते हैं लेकिन यह कुछ भी उपयोगी नहीं है।--with-libeditset -o vi


0

shकोई इतिहास नहीं है। कम से कम, मेरा नहीं है:

server$ sh
\h$ history 
sh: history: not found
\h$ fc
sh: fc: not found
\h$ exit
server$ type sh
sh is hashed (/bin/sh)
server$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Jun  1 18:43 /bin/sh -> dash*

1
वास्तव में? आईईईई विनिर्देश के अनुसार यह करता है: pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
jasonwryan

@jasonwryan, आप देखेंगे कि इतिहास या लाइन-एडिटिंग मोड से संबंधित कोई भी चीज़ उस विशेषांक में यूपी के साथ चिह्नित है, जिसका अर्थ है कि यह वैकल्पिक है (POSIX अनुरूपता के लिए, यूनिक्स अनुरूपता नहीं)।
स्टीफन चेजेलस

@ स्टीफनचेज़ेलैस - शायद सच है, लेकिन जसोनव्रीयन वैसे भी निश्चित रूप से सही है। यहाँ एक और कड़ी है । और इसके अलावा - आप की बात कर रहे $FCEDITया $HISTFILEया बस fc? मैंने सोचा कि कम से कम अनिवार्य थे - और का प्रतिपादन $PS1 \!। मैं POSIX कल्पना के बारे में गलत हो सकता है - लेकिन वे सभी में काम करते हैं dashऔर वर्षों के लिए है।
चाटुकार

1
@mikeserv, यकीन नहीं है कि तुम क्या मतलब है, लेकिन दोहराना, सभी के लिए fc, $FCEDIT, $HISTFILE, $PS1POSIX (के लिए "उपयोगकर्ता पोर्टेबिलिटी" उत्तर प्रदेश के साथ चिह्नित) में वैकल्पिक हैं। shयूनिक्स अनुरूप प्रणालियों के (अन्य बातों के अलावा यूनिक्स भी आवश्यक है कि उत्तर प्रदेश के रूप में उन यूनिक्स अनुरूपता के लिए आवश्यक है होगा echo -eआउटपुट -e<LF>)। लेकिन अगर कोई सिस्टम / शेल केवल POSIX अनुरूपता का दावा करता है, तो इसे लागू करने की आवश्यकता नहीं है। डेबियन के लिए ash, इसे पहले से ही बताए अनुसार - संकलन-समय पर सक्षम किया जा सकता है, लेकिन डेबियन कम से कम नहीं।
स्टीफन चेज़लस

@ स्टीफनचेज़लस - बहुत बहुत धन्यवाद। dashमैं उपयोग के रूप में आर्क के लिए पैक इसलिए डेबियन के मैं इसे ले तुलना में काफी अलग है। वह बहुमूल्य जानकारी है। अजीब है कि अंदर नहीं है man
मिकसेर्व
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.