shell cat EOF 变量自动解析问题
问题描述
使用如下shell安装node时,一直提示 command not found
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 才发现变量被解析了。
#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、加转义字符,适用于变量少的情况
[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 加反斜杠,或用单引号、双引号包围 。适用变量多的情况
[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
喜欢请赞赏一下啦^_^
微信赞赏
支付宝赞赏