shell cat EOF 变量自动解析问题
问题描述
使用如下shell安装node时,一直提示 command not found
1 2 3 4 5 6 7 8 9 | wget https: //mirrors .huaweicloud.com /nodejs/latest-v8 .x /node-v8 .16.0-linux-x64. tar .gz tar zxvf node-v8.16.0. tar .gz -C /usr/local cd /usr/local/ mv node* node cat <<EOF> /etc/profile .d /node .sh export NODE_HOME= /usr/local/node export PATH=$NODE_HOME /bin :$PATH EOF source /etc/profile |
去检查 node.sh 才发现变量被解析了。
1 2 3 | #cat /etc/profile.d/node.sh export NODE_HOME= /usr/local/node export PATH= /usr/local/node/bin : /usr/local/node/bin : /usr/local/sbin : /usr/local/bin : /sbin : /bin : /usr/sbin : /usr/bin : /usr/local/redis/bin/ : /root/bin |
两个解决办法
1、加转义字符,适用于变量少的情况
1 2 3 4 5 6 7 | [root@elk ~] # cat <<EOF> /etc/profile.d/node.sh > export NODE_HOME= /usr/local/node > export PATH=\$NODE_HOME /bin :\$PATH > EOF [root@elk ~] # cat /etc/profile.d/node.sh export NODE_HOME= /usr/local/node export PATH=$NODE_HOME /bin :$PATH |
2、 EOF 加反斜杠,或用单引号、双引号包围 。适用变量多的情况
1 2 3 4 5 6 7 | [root@elk ~] # cat <<'EOF'> /etc/profile.d/node.sh > export NODE_HOME= /usr/local/node > export PATH=$NODE_HOME /bin :$PATH > EOF [root@elk ~] # cat /etc/profile.d/node.sh export NODE_HOME= /usr/local/node export PATH=$NODE_HOME /bin :$PATH |
喜欢请赞赏一下啦^_^
微信赞赏

支付宝赞赏

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步