我正在使用一个流浪盒:
uname -a
Linux precise64 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64
它没有ubuntu
用户设置,而是有vagrant
一个,所以我决定添加新用户并设置用于登录的 ssh 密钥,如下所示:
sudo useradd ubuntu
ssh-keygen -b 1024 -f ubuntu -t dsa
sudo mkdir -p /home/ubuntu/.ssh
cat ubuntu.pub | sudo tee -a /home/ubuntu/.ssh/authorized_keys
sudo chmod 600 /home/ubuntu/.ssh/authorized_keys
sudo chmod 700 /home/ubuntu/.ssh
sudo chown -R ubuntu /home/ubuntu
下载私钥并登录。现在终端不支持历史记录,例如
history
-sh: 30: history: not found
并且不支持任何导航键(上/下/前进/后退)。我想设置 bash 来记住命令行历史记录以及命令和路径的自动完成。请让我知道我应该从哪里开始。
答案1
问题确实是@LuisAntolin 指出的。在 Ubuntu 系统和大多数其他系统上,默认 shell 是/bin/sh
.这是/bin/dash
基于 Debian 的系统的符号链接。dash
没有历史命令,这就是您收到该错误的原因。
虽然您确实可以通过编辑来更改此设置/etc/password
,但更好的方法是以chsh
用户身份运行ubuntu
并将默认 shell 设置为/bin/bash
。
这就是为什么useradd
不推荐使用 的adduser
前端useradd
,它是创建新用户时推荐使用的工具。从man useradd
:
useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.
所以,下次就使用adduser
并避免此类问题。
答案2
看起来你的 shell 不是 bash,而是普通的 sh。
超级快速的解决方案:只需执行bash
并看看是否有帮助。
为了获得更好且永久的解决方案,请检查 /etc/passwd 并查看用户在那里拥有什么 shell。如果您发现/bin/sh
将其更改为/bin/bash