将“ubuntu”用户添加到 Vagrant ubuntu 实例

将“ubuntu”用户添加到 Vagrant ubuntu 实例

我正在使用一个流浪盒:

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

相关内容