রুট হিসাবে কাজ করার সময় ব্যাশ প্রম্পটের আচরণ পরিবর্তন করা


16

আপনি দূরে ক্লিক করার আগে, এটি সাধারণ "আমি কীভাবে আমার বাশ প্রম্পটে রঙিন করব" প্রশ্নটি নয়। আমি ইতিমধ্যে এটি দেখতে আমার ব্যাশ প্রম্পটটি কাস্টমাইজ করেছি:

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

যেখানে বন্ধনীর সমস্ত কিছুই হালকা নীল এবং আমার। / .bashrc ফাইলে নিম্নলিখিতটি যুক্ত করে সমস্ত কিছু (including সহ) কালো

# 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

লক্ষ্যটি এটিকে তৈরি করা হয় যখন আমি 'sudo su' ব্যবহার করি তখন কেবল সেই জিনিসটিই পরিবর্তিত হয় the কালো a একটি লাল # তে পরিবর্তন হয়। আমি /etc/bash.bashrc এবং / ইত্যাদি / প্রোফাইলে দেখেছি মন্তব্য করার জন্য কেবল একটি লাইন আছে কিনা তা দেখতে, তবে আমি বুঝতে পারি না এমন দেবিয়ান_ক্রুট সম্পর্কে প্রচুর স্টাফ রয়েছে এবং আমি চাই না কিছু আপ স্ক্রু। আমি যা চাই তা কীভাবে সম্পাদন করতে পারি?

পিএস এটিই আমি প্রম্পটটি মূল হিসাবে দেখতে চাই

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

সম্পাদনা করুন: সমাধানটি সমাধান করুন, উপরের কোডটি ~ / .bashrc এ যুক্ত করার সাথে যখন আমার লক্ষ্যটি সফল হয়েছে। এছাড়াও, উপরের কোডে, $ (pwd) কেবলমাত্র হোম ডিরেক্টরিটি প্রদর্শন করে (আমার মনে হয় কারণ টার্মিনালটি খোলার সময় এটি ওয়ার্কিং ডিরেক্টরি) এবং কখনই আপডেট হয় না। $ (Pwd) এর পরিবর্তে \ w এটি ঠিক করে দেয় তবে হোম ডিরেক্টরিটি প্রদর্শিত হয় ~যা আমি এড়াতে চাইছিলাম।


আপনি কি $ pwd বা d PWD ব্যবহার করছেন?
belacqua

এটি লাইনগুলি সঠিকভাবে মোড়তে ব্যর্থ হবে যেহেতু আপনি বাশকে বলেননি যে আপনি মুদ্রণযোগ্য অক্ষরগুলি ব্যবহার করছেন। যেমন মুদ্রণযোগ্য নয় এমন অক্ষর, ঘিরা \e[01;31m, এ \[...\]। ম্যানুয়ালটিতে PROMPTING এর অধীনে এটি ব্যাখ্যা করা হয়েছে। এছাড়াও mywiki.wooledge.org/BashFAQ/053 দেখুন
গিরিহা

pwdপ্রম্পটে কাজ না করার কারণটি হ'ল, আপনাকে ডলার-সাইন এড়িয়ে চলতে $(pwd)হবে , অন্যথায় বিষয়বস্তু $ PS1 এ রাখার আগেই কার্যকর করা হবে । আপনি এই সঙ্গে এটি পরীক্ষা করতে পারেন: PS1="\$(pwd) "
এফ -3000

উত্তর:


12

আপনি কীভাবে মূল ব্যবহারকারী হন তার উপরও এটি নির্ভর করবে। আপনি যদি পরিবেশে পড়েন su - rootবা যেমন ব্যবহার করেন এমন কিছু ব্যবহার করছেন তবে আপনাকে অবশ্যই রুট ব্যবহারকারীর .bashrc এ পরিবর্তন করতে হবে 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 সিস্টেমে প্রয়োগ করা হয়েছে)।
belacqua

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 অনুসরণ করে sudo su ইস্যু করে মূলের .bashrc লোড করা হয়েছে।

এটি sudo suঅনুসরণ করে জারি করে এটি পরীক্ষা করতে পারেন cd ~আপনি দেখতে পাবেন যে আপনি মূলের হোম ডিরেক্টরিতে আছেন।

sudo suআপনি
sudo do some administrative taskউন্নত সুবিধাগুলি সহ ব্যবহারকারী হিসাবে বিপরীতে রুট হিসাবে (su = স্যুইচ ব্যবহারকারী) লগ ইন ব্যবহার করে ।

সুতরাং ব্যবহার করে sudo suআপনি প্রকৃত রুট হয়ে এবং পরিবেশ পরিবর্তনের পরিবর্তন রুট বিশেষভাবে তৈরী অর্থাত আছেন: sudo suদ্বারা অনুসরণ vim .bashrc


0

নিম্নলিখিত সাহায্য করতে পারে

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

এটি '> 'সাধারণ ব্যবহারকারীর '# 'জন্য এবং মূলের জন্য প্রদর্শিত হবে। এটি এখনও মূলের মধ্যে থাকা প্রয়োজন .bashrc


একটি অনুরূপ জিনিস সম্পন্ন করা যেতে পারে \$যা #মূল এবং $অন্যথায় দেখায় । \$এটি অনুকূলিতকরণযোগ্য না হলেও এটি খুব কার্যকর নয়।
ক্যাপ্টেন ম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.