管道到 sudo -E bash -

管道到 sudo -E bash -

我想知道在以下 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 项目。

  1. 将二进制档案解压到您想要安装 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
    
  2. 打开~/.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
    
  3. 刷新个人资料

    . ~/.profile
    
  4. 检查是否有效

    node -v
    npm version
    

相关内容