Nama pengguna Linux @ server menghilang setelah login sebagai root


3

Di server linux saya, saya masuk sebagai pengguna root untuk mengakses beberapa file: su root ... Setelah memeriksa file saya masuk untuk masuk kembali sebagai pengguna utama saya su nama pengguna . Di jendela terminal saya sekarang tertulis server ~: alih-alih nama pengguna @ server ~: di sebelah kiri baris perintah. Apakah ada cara saya bisa mendapatkan ini kembali normal?

Jawaban:


12

Lakukan beberapa exitperintah. Anda su rootmemulai subkulit tempat Anda root, dan Anda su usermemulai subkulit lain. Mengetik exitakan mengakhiri subkulit tersebut dan membawa Anda kembali ke tempat Anda mulai - sedalam satu tingkat.


Itu baru saja keluar dari koneksi jarak jauh saya ... tapi saya pikir saya sedang dalam subkulit. Apakah ada perintah bagi saya untuk melihat semua subkulit yang saya jalankan?

2
Dengan "echo $ SHLVL" Anda dapat melihat level subkulit.
Mark van Lent

6

Anda hanya perlu mengubah prompt. Anda dapat menggunakan perintah berikut:

export PS1 = "\ u @ \ h \ w:"

Saya pribadi lebih suka yang berikut ini sebagai prompt saya, tapi itu hanya saya:

export PS1 = "[\ u @ \ h \ w] \ $"

Anda dapat mencegah permintaan Anda berubah dengan menambahkan pernyataan ke file bashrc yang relevan. Lihat juga Bash Shell PS1: 10 Contoh untuk Membuat Linux Prompt Anda seperti Angelina Jolie untuk info lebih lanjut tentang PS1.


Mengapa mengubah pengguna mengubah prompt saya? Ini sepertinya lebih merupakan solusi daripada perbaikan.

Karena prompt akan menunjukkan sebagai pengguna APA yang sedang Anda operasikan, misal prompt tersebut akan terlihat seperti root @ myserver: ketika Anda beroperasi sebagai pengguna root atau someuser @ myserver: ketika Anda beroperasi di bawah kredensial pengguna tertentu.
Luke

David: Anjuran tidak bersifat global; Mereka adalah khusus pengguna. Oleh karena itu, mengubah pengguna dapat mengubah permintaan Anda. Secara khusus, pengguna root seringkali memiliki prompt generik yang sangat sederhana. Apa yang disarankan Michael di sini adalah cara yang tepat untuk mengatasi masalah Anda; Ini sama sekali bukan solusi.

Karena mereka adalah khusus pengguna, mengapa berubah menjadi pengguna root mengubah prompt untuk pengguna "david." Saya mengerti bahwa ketika saya berada di sub-shell untuk pengguna root bahwa saya akan memiliki prompt yang berbeda, tetapi segera setelah saya keluar dari subshell saya tidak mengerti mengapa itu akan mengubah prompt untuk david pengguna. Tidakkah Anda hanya mengatakan bahwa mereka independen satu sama lain? Saya benar-benar seorang noob di linux, dan saya akan sangat menghargai jika seseorang dapat menjelaskan kesalahan dalam logika saya di sini.

1
Sementara jawaban ini benar tentang cara mengubah prompt bash, itu meleset titik bahwa untuk "beralih kembali" ke pengguna Anda sendiri setelah su, Anda biasanya hanya ingin exityang su-Shell, tidak mulai satu sama lain.

5

sumengalihkan pengguna dengan memunculkan shell (sub) baru. Jadi ketika Anda masuk, Anda memulai sebuah shell. Dengan yang pertama di su-root, Anda memulai subkulit sebagai root. Di sebelah supengguna Anda memulai subkulit lain - perhatikan bahwa saat ini Anda memiliki tiga shell yang berjalan. Jadi alih-alih suke pengguna dari rootshell, exitkembali ke shell login Anda akan menyelesaikan masalah Anda.

Jika Anda telah pstreemenginstal, pstree -hakan menunjukkan kepada Anda representasi grafis dari apa yang terjadi.


Bunyinya: -sshd --- sshd --- sshd --- bash --- pstree. Ketika saya memasukkan sub-shell root saya mendapatkan: -sshd --- sshd --- sshd --- bash --- su --- bash --- pstree. Karena hanya ada satu bash di bacaan pertama, apakah saya akan benar dalam mengasumsikan bahwa saya tidak berada dalam sub-shell?

Persis. Jadi untuk keluar dari subkulit yang tidak perlu, hanya exitsampai hanya ada satu yang bashtersisa.

4

Permintaan Anda tampaknya secara normal disetel oleh salah satu file startup shell Anda yang tidak dijalankan ketika Anda sudari root ke pengguna Anda. Jika Anda menggunakan bash, man bashdi bagian INVOCATION mungkin mencerahkan. Ada beberapa file startup yang mungkin dibaca oleh bash, termasuk tetapi tidak terbatas pada:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc

The PS1variabel lingkungan hanya variabel lingkungan, dan mungkin atau tidak mungkin bisa diatur tergantung pada kombinasi dari file di atas dijalankan.

The superintah memiliki -l(atau --login) saklar yang dapat disingkat menjadi hanya -yang membuat shell baru shell login. Ini mungkin yang Anda inginkan:

su - david

Saya selalu menggunakan suopsi ini.


Itu benar. Su biasa tidak akan memanggil file startup sedangkan su - akan. Saya tidak tahu su - kependekan dari su-l! Terima kasih Greg atas informasinya.
alok

juga karena orang 'sudo', "sudo -i" adalah sangat berguna
Kent Fredric

1

jika ini adalah bash shell, coba:

source ~/.bashrc

jika itu tidak berhasil jalankan echo $PS1dan lihat apa yang telah berubah.


. ~ / .bashrc melakukan hal yang sama
Robert Swisher

1

sudengan sendirinya tidak membuat sesi baru shell. itu sebabnya ia tidak memasang shell seperti biasanya. namun,

su -

akan memulai sesi login baru

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.