我很难在/ etc / bashrc上找到sed替换的解决方案
我喜欢更改行
PS1="\u@\h NEW [\w]# "
这个
PS1="\u@\h.hostname.com NEW [\w]# "
其中hostname.com
HOST=$(hostname)
尝试几种情况,但没有逃脱,但没有。
另见另一个问题How do I escape backslashes in a sed script embedded in a bash script,但我迷路了。
通常我使用“”来使用$ {VARIABLE}但不起作用,如果使用\ for escape
sed -i "s/^PS1.*$/PS1=\"\\u@\\h.${HOST}\ \[\\w\]#\ \"/g" /etc/bashrc
答案 0 :(得分:2)
如果您想在提示中输入完整的主机名,请使用\H
。那么您就不必担心这个sed
替换。
将您的PS1
更改为:
PS1="\u@\H NEW [\w]# "
如果您想使用sed
,则以下命令应该有效:
sed 's/\(^.*\h\)\(.*$\)/\1.'"$HOST"'\2/g' /etc/bashrc
答案 1 :(得分:0)
经过多次测试,我得到了一个解决方案。
HOST=$(hostname); sed -i "s/^PS1.*$/PS1=\"\\\u@\\\h.${HOST}\ \[\\\w\]#\ \"/g" /etc/bashrc
Afert阅读用户dogbane的评论y更改为
sed -i "s/^PS1.*$/PS1=\"\\\u@\\\H\ \[\\\w\]#\ \"/g" /etc/bashrc
...谢谢