未在 Bash 中为新用户正确设置提示字符串

未在 Bash 中为新用户正确设置提示字符串

我在我的一个课程中使用 Kali Linux,我们的第一个作业的一部分是使用我们的名字而不是默认的 kali 登录创建一个自定义用户帐户,但是当我这样做时,它会与终端混淆

这是默认的 Kali 终端: 在此输入图像描述

这是用户终端:

在此输入图像描述

除了颜色之外,外壳也更难使用。没有建议,没有自动完成功能,并且不允许滚动或除打字之外的任何操作。我不知道如何让用户终端看起来像默认的 kali 终端。我尝试复制.bashrcfrom /home/kalito /home/jeff,但这似乎没有改变任何东西。

复制的文本.bashrc

 ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    prompt_color='\[\033[;32m\]'
    info_color='\[\033[1;34m\]'
    prompt_symbol=㉿
    if [ "$EUID" -eq 0 ]; then # Change prompt colors for root user
        prompt_color='\[\033[;94m\]'
        info_color='\[\033[1;31m\]'
        prompt_symbol=

答案1

根据问题中的信息,有一些不同的因素会导致您遇到的结果。

要记住的一个关键原则是,在 Linux 中,有多种不同的 shell 可用,例如 dash、csh、bash 和 zsh。 shell 就是任何提供提示、接受命令并返回输出的程序。 “标准”shell 都有相似之处,但它们在功能和配置方法方面也有差异。

此外,每个发行版都会为新用户选择一个默认 shell,通常是(但并非总是)Bash。对于偏爱性能和减少非标准扩展的发行版,sh通常会选择(通常通过创建到另一个 shell 的符号链接,然后该 shell 以 sh 兼容模式运行)。

我们可以在/etc/passwd其中一条注释的输出中看到 Kali 默认为您的 jeff 用户提供 shell sh。虽然性能非常好,但此选择缺乏可配置提示和命令完成等功能。

因此,修复它的第一步是运行如下命令:

sudo chsh -s /bin/bash jeff

正如评论中已经讨论的那样,问题的其余部分似乎归结为权限。每个用户的shell配置文件等都~/.bashrc需要被用户读取。

/etc/defaults/useradd请注意,通过编辑(或添加)目录,可以在系统范围内为新用户更改 shell 默认值/etc/skel/

我的/etc/defaults/useradd(针对 Void Linux)包含:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

/etc/skel作为运行该命令的副作用,其中的文件将被复制到新用户的主目录useradd

答案2

尽管已经正确配置了所有内容,但遇到了同样的问题。不知道发生了什么,但是:

sudo shutdown /r

通过简单的重启,我就让它工作了。

相关内容