Answers:
由于您要问两个问题,所以我都会回答。
因为您的外壳程序不支持它,或者选项卡补全没有打开。
要解决此问题,您首先需要发现您的外壳是什么。在您喜欢其外壳的机器上运行
echo $SHELL
您可能会看到common /bin/bash
,或者不太常见的东西like /bin/tcsh
,/bin/zsh
或者完全是其他东西。
现在,您可以在Ubuntu计算机上更改外壳。在该计算机上,首先确保所需的外壳存在。由于外壳程序在Ubuntu机器上的位置可能与其他机器不在同一位置,因此请键入以下内容检查位置
which bash
这会给你你想要的外壳的路径,像/bin/bash
,/usr/bin/bash
或/usr/local/bin/bash
。当然,如果你想比其他的bash壳,你会说which tcsh
,which zsh
或者类似的。
如果看不到路径,而是看到bash not found
,则需要安装适当的软件包,然后再次使用which
以查找外壳程序的安装位置。
使用所选外壳程序的路径,最终可以通过运行以下命令更改外壳程序
chsh -s /bin/bash
用/bin/bash
适合您选择的外壳的任何适当路径替换。
由于您的提示环境变量$PS1
,$PS2
等等。这些东西在shell之间往往不易于移植,因此这里有一些可能的候选对象链接:
bash
有一本详尽的手册,其中包含有关Bash变量(包括PS1
,&c)和“ 打印提示”(描述PROMPT_COMMAND
的长名称PS1
)的页面。将以下行添加到您的~/.bashrc
export PS1='[\u@\h \w] '
tcsh
有联机手册(仅其手册页),其中有关于提示环境变量的部分。将以下行添加到您的~/.tcshrc
set prompt='[%n@%m %~] '
zsh
有一个用户指南,一个简单的提示指南和一个手册,以及关于提示扩展的非常详细的参考。将以下行添加到您的~/.zshrc
export PS1='[%n@%m %~] '
Bash不是唯一的外壳。
您的问题可能是没有设置PS1的.profile或.bashrc的简单问题,或者可能是您的登录shell根本不是bash。
Bash gnu readline
用于制表符补全。这是一个复杂的主题,readline甚至具有其自己的每用户配置文件。
见man bash
,man sh
和man 3 readline
。Bash回应--version
。在许多linux系统上,/bin/sh
实际上并不是bash,而是通常的残废版本ash
。
dash
代替ash
?我以为我读过这样的东西
我想,您没有使用bash,但是sh和您的提示设置不正确(如果使用sh甚至可以)。
您可以通过输入以下内容获取当前的shell: echo $SHELL
如果您想开始bash,只需键入 bash
sh
。回显$SHELL
将打印一个名为的环境变量SHELL
。该环境变量仅指向shell,并且仅由bash设置。确定哪个shell正在运行几乎没有用,因为它只是微弱地表明当前进程的某些父级可能已经被bash占用。
/bin/sh
。但是我不知道它的名字叫shell sh
。我能想到的ash
,ksh
,csh
,bash
,zsh
,和tcsh
。第一个是linux和NetBSD上通常的/ bin / sh,最后一个是通常的FreeBSD shell,其他是可选的shell。许多桌面环境将用户登录shell更改为bash,而将/ bin / sh保留为ash。
sh
是Bourne外壳。en.wikipedia.org/wiki/Bourne_shell某些系统(Solaris)仍带有Bourne shell版本,它不仅是重新实现之一(ash,dash,bash,bash,ksh,zsh)的副本。
您需要在一个登录脚本中设置一个名为PS1的变量,例如/ etc / profile或〜/ .bashrc。这将取决于您的分布。
示例:http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
pwd
以打印当前工作目录的名称。而且您是说Tab补全也不起作用吗?(在我使用的某些计算机上,只有当我以root用户身份登录时,才会收到该简短提示,并且我很乐意将其保留在适当的位置,以作为一个很好的警告。因为很少有,即使有,也需要以root用户身份登录:您未使用root用户身份,是吗?)