这条命令成功
$ PS1='$(date +%s) $ ' 1391380852 $
但是,如果我添加换行符,它会失败
$ PS1='$(date +%s)\n$ ' bash: command substitution: line 1: syntax error near unexpected token `)' bash: command substitution: line 1: `date +%s)'
如果我使用反引号就可以了
$ PS1='`date +%s`\n$ ' 1391381008 $
但是backticks are discouraged .那么是什么导致了这个错误呢?
GNU bash, version 4.2.45(6)-release
最佳答案
您可以轻松消除解析歧义,以防止遇到任何此类错误(尽管我自己无法重现):
PS1='$(date +%s)'$'\n$ '
此 $'\n'
语法解析为文字换行符,而 '\n'
解析为包含两个字符的字符串 \n
转义序列。
有关 $''
与 ''
(扩展反斜杠转义序列)的区别的更多信息,请参阅 Bash Hackers Wiki .
关于bash - 在 msys bash 上包含换行符时 PS1 命令替换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517281/