pipe vers sudo -E bash -

10

Je me demandais quel est le but de canaliser le fichier téléchargé curldans sudo -E bash -dans le shell suivant:

curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -

Mr.Y
la source

Réponses:

10

C'est un moyen court d'exécuter un script sans avoir à enregistrer le fichier puis à l'exécuter. Lorsque vous enregistrez le fichier, puis l'exécutez, un certain nombre de choses peuvent mal se passer:

  • L'utilisateur n'a pas correctement saisi le nom de fichier
  • L'utilisateur n'a pas utilisé le bon shell (peut-être exécuté à la sh foo.shplace de bash foo.sh)
  • L'utilisateur a tenté d'exécuter le fichier au lieu de définir bash dessus ( ./foo.sh), et a oublié de définir les autorisations d'exécution
  • L'utilisateur a oublié d'utiliser sudo

En fournissant une seule ligne de commande à exécuter, les développeurs peuvent réduire le nombre d'endroits où les choses peuvent mal tourner en raison d'une erreur de l'utilisateur.

Personnellement, je méprise la tuyauterie curl to bash. Ce n'est pas prudent.

muru
la source
7

Cette commande téléchargerait le fichier et tenterait de l'exécuter avec les privilèges root.

Barafu Albino
la source
3
Merci, mais à quoi sert l' -Eoption et -à la fin du commandement?
Mr.Y
5
@Youssef -Epréserve les variables d'environnement (disons les variables pour les paramètres proxy) et -demande à bash de lire les commandes depuis l'entrée standard, c'est-à-dire le canal.
muru