我想知道在以下 shell 中通过管道将下载的文件传输curl
到的目的是什么:sudo -E bash -
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
答案1
这是执行脚本的简便方法,无需保存文件然后执行。当您保存文件然后执行时,可能会出现一些问题:
- 用户没有正确输入文件名
- 用户没有使用正确的 shell(可能运行
sh foo.sh
的是bash foo.sh
) - 用户尝试执行该文件,而不是在其上设置 bash (
./foo.sh
),但忘记设置执行权限 - 用户忘记使用
sudo
通过提供单个命令行来执行,开发人员可以减少由于 luser 错误而出错的地方的数量。
就我个人而言,我鄙视管道卷曲来抨击。这不安全。
答案2
该命令将下载文件并尝试以 root 权限执行它。
答案3
同意@muru 的观点,你不应该执行来自互联网的一些随机的 bash 脚本。
安装 NPM 和 Node.js 的更好选择是从下载二进制文件下载 | Node.js并遵循官方说明来自 Node.js 项目。
将二进制档案解压到您想要安装 Node 的任何目录,我使用
/usr/local/lib/nodejs
。sudo mkdir -p /usr/local/lib/nodejs # instead of XX use the version number you downloaded sudo tar -xJvf node-XX-XX.tar.xz -C /usr/local/lib/nodejs
打开
~/.profile
,将以下内容添加到末尾# Nodejs VERSION=vXX.XX.0 # <--- Put the version you downloaded DISTRO=linux-x64 export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH
刷新个人资料
. ~/.profile
检查是否有效
node -v npm version