为什么我的流浪汉要改造这条供应线:
echo "eval \"\$(starship init bash)\"" >> ~/.bashrc
在 .bashrc 的这一行中?
eval __main() { local major="${BASH_VERSINFO[0]}" local minor="${BASH_VERSINFO[1]}" if ((major > 4)) || { ((major == 4)) && ((minor >= 1)); }; then source <(/usr/local/bin/starship init bash --print-full-init) else source /dev/stdin <<<"$(/usr/local/bin/starship init bash --print-full-init)" fi } __main unset -f __main
这是执行的结果,$(starship init bash)
但它不应该执行,一旦我只做一个回显。
我怎样才能避免它?
编辑
使用单引号,结果相同,但已格式化。
我尝试echo "eval \"\$(starship init bash)\"" >> ~/.bashrc
在虚拟机中运行该命令,它运行良好。
有2个问题:
首先,正如@harrymc 所说,我应该使用单引号。但是我没有在字符串外部使用单引号,而是像这样使用它们:
这继续创建一个扩展的字符串,而不是我想要的。
第二个问题是我忘记了 echo 中的 -e 开关,它禁用了反斜杠转义的解释。
所以正确的行是这样的:
感谢所有帮助。