通过 shell 脚本将 "raw" 命令行添加到 bashrc(不评估命令)

Add "raw" command line to bashrc via shell script (without evaluating the command)

也许我搜索错了,但我找不到任何解决方案...

我想使用 shell 脚本将以下内容附加到我的 bashrc 文件中(使 Linux 的 Windows 子系统的安装更容易):

# Load X display (run 'XLaunch' on Windows with 'Disable access control' checked and 'Native opengl' unchecked!)
# https://sourceforge.net/projects/vcxsrv/
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print }'):0.0

这是我的 script.sh:

### Add useful stuff to bashrc
### --------------------------
echo "
# Load X display (run 'XLaunch' on Windows with 'Disable access control' checked and 'Native opengl' unchecked!)
# https://sourceforge.net/projects/vcxsrv/
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print }'):0.0
" >> ~/.bashrc

这是在 运行 script.sh:

时附加到 bashrc 的内容
# Load X display (run 'XLaunch' on Windows with 'Disable access control' checked and 'Native opengl' unchecked!)
# https://sourceforge.net/projects/vcxsrv/
export DISPLAY=172.19.96.1:0.0

由于我的 IP 可能会改变,我想将原始命令本身附加到 bashrc,而不是命令的输出。我确定这一定是一个重复的问题,但我找不到有用的答案。许多答案仅引用 echocatcat 产生相同的意外结果:

cat <<EOF >> ~/.bashrc
# Load X display (run 'XLaunch' on Windows with 'Disable access control' checked and 'Native opengl' unchecked!)
# https://sourceforge.net/projects/vcxsrv/
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print }'):0.0
EOF

问题是使用双 quote/ticks 与单 quote/ticks

尝试颠倒使用 " 和 ',因为 " 将解释和 运行 命令,而 ' 将不解释或 运行 它。

这应该有效:

echo 'export DISPLAY=$(grep -m 1 nameserver script.sh | awk '\''{print }'\''):0.0' >> temp.txt

$ cat temp.txt
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print }'):0.0

参考:https://www.howtogeek.com/howto/29980/whats-the-difference-between-single-and-double-quotes-in-the-bash-shell/

引用转义引号字符串中的文本: