使用如下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
兩個解決辦法:
- 加轉義字符,適用於變量少的情況
[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