为什么我的 Linux 提示符显示 $,而不是登录名和路径?

为什么我的 Linux 提示符显示 $,而不是登录名和路径?

在我的其中一台服务器上,提示符是 [用户@主机路径]...我实际上可以按“tab”键来自动填充路径。

但在我的新 Ubuntu 服务器上,它只是一个美元符号?

答案1

既然您问了两个问题,那我就都回答吧。

为什么 Tab 键不能自动完成文件路径?

因为您的 shell 不支持它,或者未打开制表符补全。

要解决这个问题,首先需要知道你的 shell 是什么。在你使用的 shell 的机器上,运行

echo $SHELL

您可能会看到常见的/bin/bash,或者不太常见的/bin/tcsh/bin/zsh或者完全不同的东西。

现在,您可以在 Ubuntu 机器上更改 shell。在该机器上,首先确保所需的 shell 存在。由于 shell 在 Ubuntu 机器上可能与另一台机器上的不同,请通过键入以下内容检查位置

 which bash

这将为您提供所需 shell 的路径,例如/bin/bash/usr/bin/bash/usr/local/bin/bash。当然,如果您想要 bash 以外的 shell,您会说which tcshwhich zsh或类似的。

如果您没有看到路径,而是看到bash not found,那么您需要安装适当的包,然后再次使用which来找出 shell 的安装位置。

有了你选择的 shell 的路径,你最终可以通过运行来更改你的 shell

chsh -s /bin/bash

/bin/bash用您选择的 shell 的适当路径进行替换。

为什么提示是美元符号而不是[用户@主机路径]?

由于您的提示环境变量$PS1$PS2等等。这些东西往往无法在 shell 之间移植,因此这里有一些可能的候选链接:

bash有一个详尽的手册,页面为Bash 变量(包括PS1等)以及打印提示(描述了PROMPT_COMMAND,即 的长名称PS1)。将以下行添加到您的~/.bashrc

export PS1='[\u@\h \w] '

tcsh有一个在线手册(只是它的手册页),其中有一节迅速的环境变量。将以下行添加到您的~/.tcshrc

set prompt='[%n@%m %~] '

zsh有一个用户指南,与简单的提示指南, 以及ASA手动的,并附有非常详细的参考资料迅速扩张. 将以下行添加到您的~/.zshrc

export PS1='[%n@%m %~] '

答案2

我猜,您没有使用 bash,而是使用了 sh,并且您的提示没有正确设置(如果使用 sh 可以做到这一点的话)。

你可以通过输入以下命令获取当前 shell:echo $SHELL

如果你想启动 bash,只需输入bash

答案3

Bash 不是唯一的 shell。

您的问题可能只是没有设置 PS1 的 .profile 或 .bashrc,也可能是您的登录 shell 根本不是 bash。

Bash 使用gnu readlinetab 补全等功能。这是一个复杂的主题,readline 甚至有自己的每个用户配置文件。

请参阅man bashman shman 3 readline。Bash 响应--version。在许多 Linux 系统上,/bin/sh实际上不是 bash,而通常是的残缺版本ash

答案4

您需要在其中一个登录脚本上设置一个名为 PS1 的变量,例如 /etc/profile 或 ~/.bashrc。这取决于您的发行版。

例子:http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

相关内容