मेरा लिनक्स प्रॉम्प्ट लॉगिन नाम और पथ के बजाय $ क्यों दिखाता है?


13

मेरे एक सर्वर पर, प्रॉम्प्ट [यूजर @ होस्ट पथ] है ... और मैं वास्तव में "टैब" को पथ को ऑटो-फिल करने के लिए धक्का दे सकता हूं।

लेकिन मेरे नए उबंटू सर्वर पर, यह सिर्फ एक डॉलर का संकेत है?


1
आप pwdवर्तमान कार्यशील निर्देशिका का नाम प्रिंट करने के लिए हमेशा टाइप कर सकते हैं । और क्या आप कह रहे हैं कि टैब-पूर्णता भी काम नहीं कर रही है? (मेरे द्वारा उपयोग की जाने वाली कुछ मशीनों पर, मुझे वह छोटा प्रॉम्प्ट तभी मिलता है जब मैं रूट के रूप में लॉगिन करता हूं, और मैं एक अच्छी चेतावनी के स्थान पर खुशी से छोड़ देता हूं। एक शायद ही कभी, यदि कभी भी रूट के रूप में लॉगिन करने की आवश्यकता होती है: आप रूट का उपयोग नहीं कर रहे हैं। , आप हैं?)
अर्जन

एलेक्स आप हमें बता सकते हैं कि आप किस डिस्ट्रो का उपयोग कर रहे हैं?
पलटना

मैं उबंटू का उपयोग कर रहा हूं।
एलेक्स

नवीनतम उबंटू? और क्या आप कह रहे हैं कि टैब-पूर्णता भी काम नहीं कर रही है?
अर्जन

आप दो सवाल पूछ रहे हैं: पथ को ऑटो-टैब क्यों नहीं करता है, और [उपयोगकर्ता @ होस्ट पथ] के बजाय सिर्फ एक डॉलर का संकेत क्यों है। उत्तर के लिए वोट देना थोड़ा मुश्किल है क्योंकि दोनों में से कोई भी उत्तर नहीं देता है।
जोसेफ होल्स्टेन

जवाबों:


27

चूंकि आप दो प्रश्न पूछ रहे हैं, मैं दोनों का उत्तर दूंगा।

टैब स्वतः पूर्ण फ़ाइल पथ क्यों नहीं करता है?

क्योंकि आपने शेल का समर्थन नहीं किया है, या टैब पूर्णता चालू नहीं है।

इसे हल करने के लिए, आपको पहले यह पता लगाना होगा कि आपका शेल क्या है। जिस मशीन के खोल पर आप आनंद लेते हैं, उसे चलाएं

echo $SHELL

आप आम /bin/bash, या कुछ कम आम देख सकते हैं /bin/tcsh, /bin/zshया पूरी तरह से कुछ और।

अब, आप उबंटू मशीन पर अपना शेल बदल सकते हैं। उस मशीन पर, पहले यह सुनिश्चित कर लें कि जो शेल आप चाहते हैं वह मौजूद है। चूंकि शेल उबंटू मशीन पर उसी स्थान पर नहीं हो सकता है, जैसा कि अन्य पर है, टाइप करके स्थान की जांच करें

 which bash

यह आपको खोल आप चाहते हैं के पथ, की तरह कुछ दे देंगे /bin/bash, /usr/bin/bashया /usr/local/bin/bash। बेशक, अगर आप पार्टी के अलावा किसी अन्य खोल चाहते हैं, आप कहूँगा which tcsh, which zsh, या इसी तरह।

यदि आपको कोई रास्ता दिखाई नहीं देता है, लेकिन इसके बजाय देखें bash not found, तो आपको उपयुक्त पैकेज स्थापित करने की आवश्यकता होगी, और फिर whichयह पता लगाने के लिए उपयोग करें कि शेल कहां स्थापित किया गया था।

अपने चुने हुए शेल के पथ के साथ, आप अंत में अपने शेल को चलाकर बदल सकते हैं

chsh -s /bin/bash

/bin/bashअपनी पसंद के शेल के लिए उपयुक्त पथ जो भी हो, के साथ बदलना ।

[उपयोगकर्ता @ होस्ट पथ] के बजाय डॉलर का संकेत शीघ्र क्यों दिया जाता है?

आपके शीघ्र पर्यावरण चर के $PS1कारण $PS2, और इसी तरह। गोले के बीच ये चीजें पोर्टेबल नहीं होती हैं, इसलिए संभावित उम्मीदवारों के लिए यहां कुछ लिंक दिए गए हैं:

bashएक व्यापक मैनुअल है , जिसमें बैश वेरिएबल्स (सहित PS1, और सी) और प्रिंटिंग प्रॉम्प्ट (जिसका वर्णन है PROMPT_COMMAND, लंबा नाम PS1) के पेज हैं। निम्नलिखित लाइन को अपने में जोड़ें~/.bashrc

export PS1='[\u@\h \w] '

tcshएक ऑनलाइन मैनुअल (सिर्फ उसका मैन पेज) है, जो शीघ्र पर्यावरण चर पर एक खंड के साथ है । निम्नलिखित लाइन को अपने में जोड़ें~/.tcshrc

set prompt='[%n@%m %~] '

zshएक है उपयोगकर्ता पुस्तिका , एक साथ संकेतों के लिए सरल गाइड , साथ ही एक पुस्तिका पर एक बहुत विस्तृत संदर्भ के साथ, शीघ्र विस्तार । निम्नलिखित लाइन को अपने में जोड़ें~/.zshrc

export PS1='[%n@%m %~] '

6

बैश केवल शेल नहीं है।

आपका मुद्दा एक .profile या .bashrc जो PS1 सेट करता है, न होने का एक साधारण मामला हो सकता है, या यह हो सकता है कि आपका लॉगिन शेल बिल्कुल भी नहीं है।

gnu readlineटैब पूरा होने जैसी चीजों के लिए बैश का उपयोग होता है । यह एक जटिल विषय है और रीडलाइन की अपनी प्रति-उपयोगकर्ता कॉन्फिग फ़ाइल भी है।

देखें man bash, man shऔर man 3 readline। बैश ने जवाब दिया --version। कई लिनक्स सिस्टम पर, /bin/shवास्तव में बैश नहीं है, लेकिन आमतौर पर एक अपंग संस्करण है ash


1
dashइसके बजाय नहीं ash? मैंने सोचा कि मैं कुछ इस तरह से पढ़ता हूँ
नाइट

2
+1 में एक .profile या .bashrc नहीं होने के लिए - जब तक कि उबंटू स्थापित करने पर एलेक्स ने शुरू में अपना खाता स्थापित नहीं किया, तब डिफ़ॉल्ट रूप से, नए उपयोगकर्ताओं के पास .bashrc / PS1 सेट नहीं है।
Cory Plastek

4

मुझे लगता है, आप बैश का उपयोग नहीं कर रहे हैं, लेकिन श और आपका प्रॉम्प्ट ठीक से सेट नहीं है (यदि यह श के साथ भी संभव है)।

आप अपना वर्तमान शेल टाइप करके प्राप्त कर सकते हैं: echo $SHELL

यदि आप बैश शुरू करना चाहते हैं, तो बस टाइप करें bash


आप अन्य गोले के साथ संकेत सेट कर सकते हैं। कोई शेल नहीं कहा जाता है sh। गूंज $SHELLनामक एक पर्यावरण चर को मुद्रित करेगा SHELL। यह पर्यावरण चर केवल शेल को इंगित करता है, और केवल बैश द्वारा निर्धारित किया जाता है। यह निर्धारित करना लगभग बेकार है कि कौन सा शेल चल रहा है, क्योंकि यह केवल इंगित करता है, कमजोर रूप से, कि वर्तमान प्रक्रिया के कुछ माता-पिता को कोसना पड़ सकता है।
डिजिटलरॉस

ठीक है, शेल का प्रोग्राम नाम sh (in / bin / sh) है। और हाँ, प्रतिध्वनि $ शेल चर शेल को प्रिंट करेगा जो आमतौर पर सेट होता है।
kntl

हर यूनिक्स सिस्टम में एक निष्पादन योग्य कहा जाता है /bin/sh, हाँ। लेकिन मुझे पता है कि किसका नाम नहीं है sh। मैं के बारे में सोच सकते हैं ash, ksh, csh, bash, zsh, और tcsh। पहले वाला linux और NetBSD पर सामान्य / बिन / श है, अंतिम सामान्य FreeBSD शेल है, और अन्य वैकल्पिक शेल हैं। कई डेस्कटॉप वातावरण, राख के रूप में / बिन / श को छोड़ते समय, उपयोगकर्ताओं को शेल को बदलने के लिए बदलते हैं।
डिजिटलरॉस

2
@ डिजीटलरॉस shबॉर्न शेल है। en.wikipedia.org/wiki/Bourne_shell कुछ सिस्टम (सोलारिस) अभी भी बॉर्न शेल के एक संस्करण के साथ आते हैं, जो कि पुन: कार्यान्वयन (राख, डैश, बैश, ksh, zsh) में से एक की नकल नहीं है।
क्रिस जॉन्सन

... और बैश को "बॉर्न फिर शेल" के रूप में जाना जाता है, जो बॉर्न शेल, कैश और क्श से कुछ विशेषताओं को विरासत में मिला है।
उलट

2

आपको अपनी लॉगिन स्क्रिप्ट में PS1 नामक एक चर सेट करना होगा, उदाहरण के लिए / etc / प्रोफाइल या ~ / .bashrc। यह आपके वितरण पर निर्भर करेगा।

उदाहरण: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html


जरूरी नहीं कि .Bashrc चूंकि वह
knittl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.