252 votes

commande source non trouvée dans le shell sh

J'ai un script qui utilise sh coquille. J'obtiens une erreur dans la ligne qui utilise l'option source commande. Il semble source n'est pas inclus dans mon sh coquille.

Si j'essaie explicitement d'exécuter source de la coquille que je reçois :

sh: 1: source: not found

Dois-je en quelque sorte installer "source" ? Ai-je une mauvaise version de sh ?

259voto

choroba Points 56333

/bin/sh est généralement un autre shell qui essaie d'imiter The Shell. De nombreuses distributions utilisent /bin/bash para sh il soutient source . Sur Ubuntu, cependant, /bin/dash est utilisé qui ne supporte pas source . La plupart des obus utilisent . au lieu de source . Si vous ne pouvez pas modifier le script, essayez de changer le shell qui l'exécute.

205voto

Guru Points 7050

Dans le shell Bourne(sh), utilisez la commande . pour obtenir un fichier source

. filename

Dans certains OS/environnements (Mac OS, Travis-CI, Ubuntu, au moins), cela doit être le cas :

. ./filename

(Crédit à Commentaire d'Adrien Joly ci-dessous )

65voto

shlsy Points 71
$ls -l `which sh`
/bin/sh -> dash

$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]

$ls -l `which sh`
/bin/sh -> bash

Alors, tout ira bien.

49voto

Travis Clarke Points 1715

El source builtin est un bashisme. Écrivez-le simplement comme . à la place.

par exemple

. $FILE

# OR you may need to use a relative path (such as in an `npm` script):

. ./$FILE

https://wiki.ubuntu.com/DashAsBinSh#source

16voto

Mojtaba Yousefi Points 366

Ce problème se produit parce que jenkins Execute Shell exécute le script via son /bin/sh.

Par conséquent, /bin/sh ne connait pas la "source"

Il vous suffit d'ajouter la ligne ci-dessous en haut de votre Execute Shell dans jenkins

#!/bin/bash

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X