I was wondering what is the purpose of piping the downloaded file by curl into sudo -E bash - in the following shell:
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
It's a short way of executing a script without having to save the file and then execute it. When you save the file and then execute it, a number of things can go wrong:
sh foo.sh instead of bash foo.sh)./foo.sh), and forgot to set execute permissionssudoBy providing a single command line to execute, the developers can decrease the number of places where things can go wrong due to luser error.
Personally, I despise piping curl to bash. It's not safe.
This command would download file and attempt to execute it with root privileges.
Agreed with @muru you should not execute some random bash script from the internet.
Better option to install NPM & Node.js is to download the binary from Download | Node.js and follow the official instructions from the Node.js project.
Unzip the binary archive to any directory you wanna install Node, I use /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
Open ~/.profile, add below to the end
# Nodejs
VERSION=vXX.XX.0 # <--- Put the version you downloaded
DISTRO=linux-x64
export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH
Refresh profile
. ~/.profile
Check if it works
node -v
npm version
-Eoption and-at the end of command ? – youssef Mar 11 '17 at 07:12-Epreserves environment variables (say variables for proxy settings) and-tells bash to read commands from standard input, i.e., the pipe. – muru Mar 11 '17 at 07:13