web-dev-qa-db-ja.com

逆exec bash

私はDebianを使用していて、今日は次のように入力しました。

exec bash

私の端末で、どういうわけかuser@xxxbash-4.4に変更されました。

user@xxxを取り戻すにはどうすればよいですか?たとえば、現在のフォルダーへのパスなどが表示されるので、私にとってはより良いと思います...

8
KronwarsCZ
exec bash -l

これにより、ログインシェルとして開始されたbashシェルとの現在のシェルセッションがreplaceになります。ログインシェルは、.bash_profile(または.bash_loginまたは.profile、どちらか最初に検出された方)と、プロンプトが定義されている可能性がある他のファイルを読み取ります。

exec bashを使用して、現在のシェルセッションをインタラクティブシェルに置き換えました。これにより、ホームディレクトリから.bashrcが読み取られます。ここでプロンプトを設定しないと、デフォルトのbashプロンプトが表示されます。

execがなければ、exitだけで古いシェルセッションに戻ることができます。 execを使用すると、古いセッションがなくなります。

シェルを終了して新しいシェルを開始することもできます。

21
Kusalananda

user@xxxは「プロンプト」と呼ばれます。 PS1環境変数によって設定されます。 bashでは、デフォルトでbash-<version>に設定されていますが、これはまったく役に立たないものですが、原則として、bash構成ファイルでは常により適切な値に設定する必要があります。

これが発生する一般的なケースは、~/.bashrcを含まない/etc/profileファイルを作成したときです。このファイルがないと、bashは/etc/profileにフォールバックし、システムのデフォルト構成を取得していました。空またはミニマリストの~/.bashrcを使用すると、独自の構成のみが読み込まれ、ディストリビューションやシステム管理者が/etc/profileに入力した内容を利用できなくなります。

解決策:これを~/.bashrcに追加してください:

if [ -f /etc/profile ]; then
    . /etc/profile
fi

または、次のようなものを追加してプロンプトを自分で設定します(上記のスニペットの後に):

PS1="\u\h@\\$ "

(プロンプトに表示されるものをカスタマイズして、カラフルにすることができます http://ezprompt.net/ などのツールを使用します)

0
Matthieu Moy