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

Ale*_*lex 18 linux users ubuntu

在我的一台服务器上,提示是 [user@host path]...我实际上可以按下“tab”来自动填充路径。

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

小智 31

既然你问了两个问题,我就回答两个。

为什么不标签自动完成文件路径?

因为你的 shell 要么不支持它,要么没有打开选项卡完成。

要解决此问题,您首先需要了解您的外壳是什么。在你喜欢它的外壳的机器上,运行

echo $SHELL
Run Code Online (Sandbox Code Playgroud)

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

现在,您可以在 Ubuntu 机器上更改您的 shell。在这台机器上,首先确保你想要的 shell 存在。由于 shell 在 Ubuntu 机器上的位置可能与另一台机器上的位置不同,请通过键入来检查位置

 which bash
Run Code Online (Sandbox Code Playgroud)

这将为您提供所需外壳的路径,例如/bin/bash, /usr/bin/bash, 或/usr/local/bin/bash。当然,如果你想比其他的bash壳,你会说which tcshwhich zsh或者类似的。

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

使用您选择的 shell 的路径,您最终可以通过运行来更改您的 shell

chsh -s /bin/bash
Run Code Online (Sandbox Code Playgroud)

替换/bin/bash为您选择的 shell 的任何适当路径。

为什么提示是美元符号而不是 [user@host path]?

因为你提示的环境变量$PS1, $PS2, 等等。这些东西往往不能在 shell 之间移植,所以这里有一些可能的候选人的链接:

bash有一个广泛的手册,有关于Bash 变量(包括PS1, &c)和打印提示(它描述PROMPT_COMMAND了 的长名称PS1)的页面。将以下行添加到您的~/.bashrc

export PS1='[\u@\h \w] '
Run Code Online (Sandbox Code Playgroud)

tcsh有一个在线手册(只是它的手册页),其中有一个关于提示环境变量的部分。将以下行添加到您的~/.tcshrc

set prompt='[%n@%m %~] '
Run Code Online (Sandbox Code Playgroud)

zsh有一个用户指南,有一个简单的提示指南,还有一个手册,有关于提示扩展的非常详细的参考。将以下行添加到您的~/.zshrc

export PS1='[%n@%m %~] '
Run Code Online (Sandbox Code Playgroud)


kni*_*ttl 7

我想,您没有使用 bash,但是 sh 和您的提示设置不正确(如果这甚至可以使用 sh)。

您可以通过键入以下内容来获取当前的外壳: echo $SHELL

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

  • @DigitalRoss `sh` 是 Bourne shell。http://en.wikipedia.org/wiki/Bourne_shell 一些系统 (Solaris) 仍然带有一个 Bourne shell 版本,它不仅仅是一个重新实现(ash、dash、bash、ksh、zsh)的副本. (2认同)

Dig*_*oss 6

Bash 不是唯一的 shell。

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

Bashgnu readline用于诸如制表符补全之类的事情。这是一个复杂的主题,readline 甚至有自己的每用户配置文件。

man bashman sh、 和man 3 readline。Bash 回应--version. 在许多 linux 系统上,/bin/sh实际上不是 bash,而是ash.

  • +1 表示没有 .profile 或 .bashrc - 除非 Alex 在安装 Ubuntu 时最初设置了他的帐户,然后默认情况下,新用户没有 .bashrc / 没有设置 PS1。 (2认同)