反向执行 bash

反向执行 bash

我正在使用 Debian,今天我输入:

exec bash

在我的终端中,不知何故user@xxx更改为bash-4.4.

我如何取回user@xxx?我认为这对我来说更好,因为例如它显示了我当前文件夹的路径等......

答案1

exec bash -l

这会代替当前 shell 会话的bashshell 作为登录 shell 启动。登录 shell 将读取您的.bash_profile(或.bash_login.profile,以先找到的为准)以及可能定义提示符的其他文件。

使用exec bash,您可以将当前的 shell 会话替换为交互式 shell。这.bashrc将从您的主目录中读取。如果您没有在那里设置提示,那么您将得到默认bash提示。

如果没有exec,您将能够exit返回到旧的 shell 会话。有了exec,旧的会话现在就消失了。

您也可以简单地退出 shell 并启动新的 shell。

答案2

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/

相关内容