Bash: Beralih dari pengguna ke root menyebabkan masalah dengan prompt

0

Saya menggunakan Mac, menjalankan Snow Leopard (jika itu penting). Saya mengubahsuaikan bash prompt saya untuk menampilkan hal-hal yang ditarik dari tempat tertentu pengguna. Misalnya, saya menggunakan Ruby Version Manager untuk mengelola berbagai versi Ruby. Saya menampilkan versi Ruby yang saya gunakan di prompt. Saya juga menggunakan Homebrew , dan telah menginstal Git via Homebrew. Saya juga menampilkan cabang Git di prompt.

Masalahnya adalah ketika saya beralih ke root (sudo su, atau sudo bash) ia mencoba menggunakan prompt pengguna saya, yang tidak akan dapat digunakan karena tidak akan dapat menemukan RVM atau Homebrew. Jadi ini menampilkan kesalahan. Bagaimana saya bisa memperbaikinya sehingga tidak menampilkan kesalahan? (baik dengan membawa RVM / Homebrew seolah-olah saya masih pengguna itu, atau tidak menampilkan custom prompt saya)

Andrew
sumber

Jawaban:

1

Pilihan 1

Gunakan, sudo su -bukan hanyasudo su

Dasbor ekstra adalah sinonim -lyang mensimulasikan login lengkap. Ini berarti ia akan membaca file config (.bashrc, .profile, dll) dari direktori home pengguna root.

pilihan 2

Jika Anda bersikeras menggunakan .bashrc Anda sendiri, lakukan tes untuk memeriksa keberadaan RVM di jalur sebelum mencoba meletakkannya di jalur. Sesuatu seperti ini:

type rvm > /dev/null
RVM_EXISTS=$?  # get exit status, 0 if it exists
if [ $RVM_EXISTS ] 
then
    PS1=(your rvm code here)
else
    PS1=(your prompt w/o rvm here)
fi

(tidak diuji)

Opsi 3

Uji keberadaan rvm seperti pada opsi 2, tetapi buat fungsi dummy rvm bash jika tidak ada dan jangan ubah PS1

type rvm > /dev/null
RVM_EXISTS=$?  # get exit status, 0 if it exists
if [ ! $RVM_EXISTS ] 
then
   rvm () { echo > /dev/null }
fi
Doug Harris
sumber
0

Anda perlu mengubah prompt Anda dengan memanipulasi variabel sistem $ PS1

Jika Anda hanya ingin menampilkan nama host Anda diikuti dengan tanda dolar, Anda dapat melakukan hal berikut: export PS1='h:\W\$'

Untuk menjaga pengaturan Anda untuk Bash shell berikutnya, tempatkan baris di $ HOME / .bashrc Anda yang terlihat seperti ini: PS1='\h:\W\$'

Pengguna Mac mencatat hal berikut Karena cara OS X dan aplikasi Terminal menangani emulasi perintah, Anda harus membuat file $ HOME / .bash_profile dan masukkan baris berikut: source ~ / .bashrc

Sumber

dekyos
sumber
0

Anda dapat mengatur semuanya di direktori home root sehingga menggunakan .bashrc yang berbeda, atau yang sama (hanya mv)

rampok
sumber
0

Saya tidak sepenuhnya yakin, tetapi saya percaya bahwa menjalankan sudo -sakan memulai shell root dengan semua variabel lingkungan Anda masih berlaku.

chronos
sumber
0

Tidak akan membiarkan saya memilih, tetapi Doug Harris memiliki jawaban yang benar: "Gunakan sudo su - bukan hanya sudo su"

Sejauh ini cara termudah untuk melakukannya. Dan itu berfungsi ketika akan sudo pada setiap pengguna untuk menganggap lingkungan login mereka. Saya pribadi tidak akan dipusingkan dengan lingkungan login root dan akan menggunakan "sudo su -" sebagai gantinya.

JJRIV
sumber