在我的其中一台服务器上,提示符是 [用户@主机路径]...我实际上可以按“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 tcsh
、which 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 readline
tab 补全等功能。这是一个复杂的主题,readline 甚至有自己的每个用户配置文件。
请参阅man bash
、man sh
和man 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