在提示上显示新行

the*_*cer 71 bash scripts

我希望在每个提示上添加一个新行。而不是光标在行上显示为 name@machine:~$ _

我希望它在下一行,例如:

name@machine:~$
_
Run Code Online (Sandbox Code Playgroud)

谢谢。

hto*_*que 93

  • 打开文件~/.bashrc(或者/etc/bash.bashrc它是否应该对所有用户全局有效)。

  • 找到名为 的变量PS1

  • 只需将 an\n放在PS1变量值的末尾。

  • 最简单的方法是将 PS1="$PS1\n" 添加到 ~/.bashrc 文件的底部。 (23认同)
  • 猜猜这更容易维护 - 为什么不让它成为一个新的答案?:) (3认同)

Rém*_* B. 17

我更喜欢使用自定义.bashrc文件

首先,将以下行附加到您的~/.bashrc文件中:

##
## INCLUDE CUSTOM `.bashrc` CODE
##
if [ -f ~/.bashrc_custom ]; then
    . ~/.bashrc_custom
fi
Run Code Online (Sandbox Code Playgroud)

创建自定义文件:

touch ~/.bashrc_custom`
Run Code Online (Sandbox Code Playgroud)

最后打开它并将以下几行放入:

# File: $HOME/.bashrc_custom
# THIS FILE IS A USER-CUSTOM BASHRC FILE TO KEEP CLEAN THE DEFAULT ~/.barshrc FILE.
# PUT THERE ANY CUSTOM CODE MANUALLY ADDED BY YOU


# Add a new line at the end of the command prompt
#PS1=${PS1}\\n
PS1=${PS1%?}
PS1=${PS1%?}\n'$ '
Run Code Online (Sandbox Code Playgroud)

下一个打开的 shell 会话将如下所示:

user@host:~
$ <your-next-command-will-be-rendered-here>
Run Code Online (Sandbox Code Playgroud)

  • 为什么建议使用自定义 .bashrc 文件?不正是为什么 .bashrc 存在于您的主目录中吗?我知道你可以使用和修改默认生成的 .bashrc,但是当你想在其他操作系统上使用 .bashrc 时你不能,因为你依赖于默认的 .bashrc 文件,如果它不一样,它的行为可能会有所不同。 (4认同)

Mat*_*hew 6

这很痛苦,但最终,由于具有自定义颜色的复杂自定义 PS1 设置,这是唯一对我有用的方法:

new_line() {
    printf "\n$ "
}
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]$(new_line)'
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)$(new_line)'
fi
Run Code Online (Sandbox Code Playgroud)