Kök olarak çalışırken bash isteminin davranışını değiştirme


16

Tıklamadan önce, bu tipik "bash istemimi nasıl renklendiririm" sorusu değildir. Ben zaten bash istemimi şöyle görünmesi için özelleştirdim:

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

parantez içindeki her şey açık mavi, ~ / .bashrc dosyama aşağıdakileri ekleyerek diğer her şey ($ dahil) siyahtır

# 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

Amaç 'sudo su' kullandığımda değişen tek şey, siyah $ 'ın kırmızı #' ya dönüşmesi olacak. Ben yorum yapmak için sadece bir çizgi olup olmadığını görmek için /etc/bash.bashrc ve / etc / profile baktım, ama debian_chroot hakkında anlamadığım bir sürü şey var ve ben istemiyorum bir şeyi mahvetmek. İstediğimi nasıl başarabilirim?

PS Bu istemi kök gibi görünmesini istiyorum budur

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

edit: Kök hedefime ulaşırken yukarıdaki kodu ~ / .bashrc'ye ekleyerek bu çözüldü olarak işaretleyin. Ayrıca, yukarıdaki kodda, $ (pwd) sadece ana dizini görüntüler (sanırım çünkü terminal açıldığında çalışma dizini) ve asla güncellenmez. $ (Pwd) yerine \ w yazılması bunu düzeltir, ancak ana dizini ~kaçınmaya çalıştığım gibi görüntüler .


$ Pwd veya $ PWD kullanıyor musunuz?
belacqua

Bash'a yazdırılamayan karakterler kullandığınızı söylemediğiniz için satırları doğru şekilde saramıyor. Gibi olmayan basılabilir karakterler, içine alın \e[01;31miçinde, \[...\]. Bu kılavuzdaki PROMPTING altında açıklanmaktadır. Ayrıca bkz. Mywiki.wooledge.org/BashFAQ/053
geirha

Bilgi pwdisteminde çalışmamanın nedeni , dolar işaretinden kaçmanız gerektiğidir, aksi takdirde içerik $ PS1'e yerleştirilmeden önce$(pwd) yürütülür . Buna ile test edebilirsiniz: . PS1="\$(pwd) "
F-3000

Yanıtlar:


12

Ayrıca kök kullanıcı olmanıza da bağlıdır. Gibi bir şey kullanıyorsanız, kök kullanıcının .bashrc değişiklik yapmak gerekir su - rootyasudo -iOrtamda okuduğunuz okuduğunuz yerde .

İle sudo -s , kendi .bashrc okumak gerekir.

Kodunuzda hata ayıklamak ve ne zaman yürütüldüğünü söylemek için bazı printf veya echo ifadeleri eklemeyi düşünün.

idKim olduğunuzu düşündüğünüzden emin olmak için komutu kullanın :

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

Ben kullanıyorumsudo su
zmitchell

1
sudo su~ root / .bashrc (en azından şu anda 13.04 sistemime uygulandığı şekliyle).
belacqua

3

Komut isteminin rengini kök için kırmızı olarak değiştirmek için .bashrcbu iş parçacığındaki örnekleri izleyerek dosyayı değiştirdim .

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

Ardından, vim'de, PS1ödevin son görünümünü arayın ve bunu aşağıdakini ekleyin ( $PS1önceki diğer satırların değiştirilmesine gerek kalmayacak ve değişiklik kolayca geri döndürülebilir olacak şekilde değerini güncellediğine dikkat edin ):

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

2

Belacqua'nın geçerli cevabını takiben , /ubuntu//a/305053/12218 , sudo su vererek kökün .bashrc yüklenir.

Bunu, sudo suardından bunu izleyerek kontrol edebilirsiniz .cd ~ kökün ana dizininde olduğunuzu göreceksiniz.

kullanma sudo su Birlikte aksine root olarak (su = anahtar kullanıcı) oturum
sudo do some administrative taskyükselmiş ayrıcalıklarla olarak kullanıcı.

Böylece kullanarak sudo sugerçek kök haline gelirsiniz ve çevrede yapılan değişiklikler özellikle kökte yapılan değişikliklerdir, yani: sudo suardından vim .bashrc.


0

Aşağıdakiler yardımcı olabilir

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

Bu '> 'normal kullanıcı ve '# 'kök için gösterilecektir. Bunun hala kökünde olması gerekiyor .bashrc.


Benzer bir şey, kök olup olmadığını \$gösteren başka bir şey yapılabilir . özelleştirilebilir olmadığı için çok kullanışlı değil. #$\$
Kaptan Adam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.