रूट के रूप में कार्य करते समय बैश प्रॉम्प्ट का व्यवहार बदलना


16

इससे पहले कि आप दूर क्लिक करें, यह विशिष्ट नहीं है "मैं अपने बैश प्रॉम्प्ट को कैसे रंग देता हूं" सवाल है। मैंने पहले ही इस तरह दिखने के लिए अपने बैश प्रॉम्प्ट को अनुकूलित कर लिया है:

[user @ host]----[$(pwd)]
$ 

जहाँ कोष्ठक में सब कुछ हल्का नीला है, और बाकी सब ($ सहित) मेरी ~ / .bashrc फ़ाइल में निम्न जोड़कर काला है।

# Turn the prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi

लक्ष्य इसे ऐसा बनाना है कि जब मैं 'सूडो सु' का उपयोग करता हूं तो केवल एक चीज बदल जाती है, वह यह है कि $ $ लाल # में बदल जाती है। मैंने /etc/bash.bashrc और / etc / प्रोफ़ाइल में यह देखने के लिए देखा है कि क्या कोई टिप्पणी करने के लिए सिर्फ एक पंक्ति है, लेकिन डेबियन_क्रोच के बारे में सामान का एक गुच्छा है जो मुझे समझ में नहीं आता है, और मुझे नहीं चाहिए कुछ गड़बड़ करने के लिए। मैं जो चाहता हूं उसे कैसे पूरा कर सकता हूं?

पुनश्च यह वही है जो मैं चाहता हूं कि रूट की तरह दिखना चाहिए

[user @ host]----[$(pwd)]
(red)#

संपादित करें: इस हल को चिह्नित करें, उपरोक्त कोड को ~ / .bashrc में जोड़ते हुए रूट ने मेरा लक्ष्य पूरा किया। इसके अलावा, उपरोक्त कोड में, $ (pwd) केवल होम डायरेक्टरी को प्रदर्शित करता है (मुझे लगता है क्योंकि टर्मिनल के खुलने पर वह वर्किंग डायरेक्टरी है), और कभी भी अपडेट नहीं होता है। \ W के साथ $ (pwd) को प्रतिस्थापित करने से यह ठीक हो जाता है, लेकिन होम डायरेक्टरी को प्रदर्शित करता है ~, जिससे मैं बचने की कोशिश कर रहा था।


क्या आप $ pwd या $ PWD का उपयोग कर रहे हैं?
बेलाक्वा

यह लाइनों को सही ढंग से लपेटने में विफल हो जाएगा क्योंकि आपने बैश नहीं बताया था कि आप गैर-मुद्रण योग्य वर्णों का उपयोग कर रहे थे। गैर-मुद्रण योग्य वर्ण, जैसे \e[01;31m, में संलग्न करें \[...\]। यह मैनुअल में PROMPTING के तहत समझाया गया है। इसके अलावा mywiki.wooledge.org/BashFAQ/053
geirha

pwdप्रॉम्प्ट में काम नहीं करने का कारण यह है कि आपको डॉलर-साइन से बचने की आवश्यकता है, अन्यथा सामग्री को $ PS1 में रखने से पहले$(pwd) निष्पादित किया जाएगा । आप इसे इसके साथ परीक्षण कर सकते हैं :। PS1="\$(pwd) "
F-3000

जवाबों:


12

यह इस बात पर भी निर्भर करेगा कि आप रूट यूजर कैसे बनते हैं। आप जड़ उपयोगकर्ता के .bashrc में परिवर्तन करने के लिए आप की तरह कुछ प्रयोग कर रहे हैं की जरूरत है su - rootया sudo -iहै, जहां आप वातावरण में पढ़ें।

इसके साथ sudo -s, आपको अपना स्वयं का .bashrc पढ़ना चाहिए।

अपने कोड को डिबग करने के लिए कुछ प्रिंटफ या इको स्टेटमेंट जोड़ने पर विचार करें, यह बताने के लिए कि यह कब निष्पादित हुआ है।

idयह सुनिश्चित करने के लिए कमांड का उपयोग करें कि आप वह हैं जो आपको लगता है कि आप हैं:

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)

मैं का उपयोग कर रहा हूँsudo su
zmitchell

1
sudo suपढ़ता है ~ रूट / .bashrc (कम से कम जैसा कि वर्तमान में मेरे 13.04 सिस्टम पर लागू किया गया है)।
बेलाक्वा

3

रूट के लिए प्रॉम्प्ट का रंग बदलने के लिए, मैंने .bashrcइस थ्रेड में उदाहरणों का अनुसरण करते हुए फ़ाइल को संशोधित किया ।

regularuser@myubuntubox:~$ sudo su - 
root@myubuntubox:~# vim .bashrc

फिर, विम में, PS1असाइनमेंट के अंतिम स्वरूप के लिए खोज करें , और इसे निम्नलिखित जोड़ें (ध्यान दें कि यह मूल्य को अपडेट करता है $PS1ताकि अन्य पिछली लाइनों को संशोधित करने की आवश्यकता न हो, और परिवर्तन आसानी से वापस हो जाए):

# Set RED prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"

2

बेलाक्वा के वैध जवाब /ubuntu//a/305053/12218 के बाद, सुडो जारी करके रूट का -bashrc लोड किया जाता है।

आप इसे जारी कर सकते हैं sudo suइसके बाद जारी करके cd ~आप देखेंगे कि आप रूट के होम डायरेक्टरी में हैं।

sudo suआप का उपयोग कर के रूप में रूट (सु = स्विच उपयोगकर्ता) के
sudo do some administrative taskरूप में उन्नत विशेषाधिकार के साथ उपयोगकर्ता के विपरीत ।

तो उपयोग करके sudo suआप वास्तविक जड़ बन जाते हैं और पर्यावरण में किए गए परिवर्तन विशेष रूप से मूल में किए गए परिवर्तन होते हैं, अर्थात: sudo suइसके बाद vim .bashrc


0

निम्नलिखित मदद कर सकता है

export PS1='`[ $(id -u) == "0" ] && echo "#" || echo ">"` '

यह '> 'सामान्य उपयोगकर्ता और '# 'रूट के लिए दिखाई देगा । यह अभी भी रूट में होना चाहिए .bashrc


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