rootとしてログインするとLinuxのusername @ serverが消える


3

私のLinuxサーバで、私はいくつかのファイルにアクセスするためにrootユーザとしてサインインしました: su root ...ファイルを確認した後、メインユーザーとしてサインインしました。 suユーザー名 。私の端末ウィンドウには、 サーバー〜: の代わりに username @ server〜: コマンドラインの左側にあります。これを正常に戻す方法はありますか?

回答:


12

少しする exit コマンド。きみの su root あなたがrootであるサブシェルを始めた su user もう一つ始めた。タイピング exit それらのサブシェルを終わらせて、あなたが始めたところにあなたを連れ戻すでしょう - 1レベル深い。


それはちょうど私のリモート接続を終了しました...しかし私はサブシェルにいると思います。実行しているすべてのサブシェルを表示するためのコマンドはありますか?

2
"echo $ SHLVL"を使えば、サブシェルレベルを見ることができます。
Mark van Lent

6

プロンプトを変更するだけです。次のコマンドを使用できます。

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

私は個人的に次のことを私のプロンプトとして好みますが、それは私だけです:

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

関連するbashrcファイルにステートメントを追加することでプロンプトの変更を防ぐことができます。また見なさい Bash Shell PS1:アンジェリーナ・ジョリーのようにLinuxのプロンプトを表示させる10の例 PS1の詳細については。


ユーザーを変更するとプロンプトが変わるのはなぜですか?これは修正よりも回避策のようです。

なぜなら、プロンプトはあなたが現在操作しているユーザーを示しているからです。 rootユーザーまたはsomeuser @ myserverとして操作している場合は、プロンプトはroot @ myserverのようになります。someuserの資格情報で操作している場合は、
Luke

David:プロンプトはグローバルではありません。それらはユーザー固有です。したがって、ユーザーを変更するとプロンプトが変わる可能性があります。特に、rootユーザーは非常に素朴な一般的なプロンプトをしばしば持っています。マイケルがここで提案したことはあなたの問題に取り組むためのまさに正しい方法です。それはまったく回避策ではありません。

これらはユーザー固有のものなので、rootユーザーに変更すると、ユーザー "david"のプロンプトが変わるのはなぜでしょうか。 rootユーザーのサブシェルにいるときは別のプロンプトが表示されることを理解していますが、そのサブシェルを終了してもすぐにユーザーdavidのプロンプトが変更されるのかわかりません。あなたはただ彼らが互いに独立していると言っていませんでしたか?私は間違いなくLinuxの愛好家です、そして、誰かが私の論理におけるエラーをここで説明することができれば私はそれをいただければ幸いです。

1
この答えはbashプロンプトを変更する方法については正しいのですが、それはあなたの後にあなた自身のユーザに "戻る"という点を見逃しています。 su、あなたは通常単にしたい exitsu 別のものを起動しないでください。

5

su 新しい(サブ)シェルを生成してユーザーを切り替えます。だからあなたがログインしたとき、あなたはシェルを始めました。最初とは su rootになると、rootとしてサブシェルを始めました。次の su あなたのユーザにはさらに別のサブシェルを始めました - この瞬間にあなたは3つのシェルを走らせていることに注意してください。だから代わりに su ルーツシェルからユーザーへ exit ログインシェルに戻ってあなたの問題を解決します。

あなたが持っている場合 pstree インストール済み pstree -h 何が起こっているのかをグラフィカルに表示します。


-sshd --- sshd --- sshd --- bash --- pstreeです。ルートサブシェルに入ると、-sshd --- sshd --- sshd --- bash --- su --- bash --- pstreeとなります。最初の読み物にはbashが1つしかないので、自分がサブシェルに入っていないと仮定しても正しいでしょうか。

その通りです。不要なサブシェルから抜け出すには、 exit 1つだけになるまで bash 左。

4

プロンプトは通常、シェル起動ファイルの1つによって設定されているように見えます。 ではない あなたが走っているとき su rootからあなたのユーザへ。 bashを使っているのなら、 man bash 勧誘のセクションで啓発することがあります。 bashが読み込むかもしれないスタートアップファイルがいくつかあります。

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

PS1 環境変数は単なる環境変数であり、上記のファイルのどの組み合わせが実行されるかに応じて設定される場合と設定されない場合があります。

su コマンドは -l (または --login )省略されてもよいスイッチ - これは新しいシェルをログインシェルにします。これはおそらくあなたが望むものです:

su - david

私はいつも使う su このオプションでは。


そのとおりです。普通のsuはスタートアップファイルを起動しませんがsu - は起動しません。私はsuを知りませんでした - su -lの略です!情報をくれてありがとうGreg。
alok

また、「sudo」の人々にとっては、「sudo -i」は 非常に ハンディ
Kent Fredric

1

これがbashシェルなら、試してみてください。

source ~/.bashrc

それでもうまくいかない場合 echo $PS1 そして何が変わったか見てください。


。 〜/ .bashrcも同じことをします
Robert Swisher

1

su それ自体では、シェルの新しいセッションは作成されません。それが、通常のようにシェルを設定しない理由です。しかしながら、

su -

新しいログインセッションを開始します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.