我正在尝试设置 PS1
以便它在登录后立即打印出一些内容,但稍后会以换行符开头。
假设 export PS1="\h:\W\u\$ "
,那么第一次(即登录后)您会得到:
hostname:~ username$
我一直在尝试在我的 ~/.bashrc
中做一些类似的事情:
function __ps1_newline_login {
if [[ -n "${PS1_NEWLINE_LOGIN-}" ]]; then
PS1_NEWLINE_LOGIN=true
else
printf '\n'
fi
}
export PS1="\$(__ps1_newline_login)\h:\W \u\$ “
期望得到:
# <empty line>
hostname:~ username$
一开始的完整示例是:
hostname:~ username$ ls `# notice: no empty line desired above!`
Desktop Documents
hostname:~ username$
最佳答案
尝试以下操作:
function __ps1_newline_login {
if [[ -z "${PS1_NEWLINE_LOGIN}" ]]; then
PS1_NEWLINE_LOGIN=true
else
printf '\n'
fi
}
PROMPT_COMMAND='__ps1_newline_login'
export PS1="\h:\W \u\$ "
解释:
PROMPT_COMMAND
是一个特殊的 bash 变量,每次在设置提示之前执行。- 您需要使用
-z
标志来检查字符串的长度是否为0。
关于bash - 如何在 PS1 中设置条件换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859148/