J'ai un script qui utilise le sh
shell. J'obtiens une erreur dans la ligne qui utilise la source
commande. Il semble source
ne pas être inclus dans ma sh
coquille.
Si j'essaye explicitement de courir à source
partir du shell, j'obtiens:
sh: 1: source: not found
Dois-je en quelque sorte installer "source"? Ai-je une mauvaise version de sh
?
source
est une "mauvaise version".source: not found
signifie que lasource
commande a été correctement évaluée, mais que le fichier qu'elle aurait dû lire n'existe pas.source
car c'est une fonctionnalité du shell. Il ne peut pas être implémenté en tant que commande externe.Réponses:
/bin/sh
est généralement un autre shell essayant d'imiter The Shell. De nombreuses distributions utilisent/bin/bash
poursh
, il prend en chargesource
. Sur Ubuntu, cependant,/bin/dash
est utilisé qui ne prend pas en chargesource
. La plupart des shells utilisent à la.
place desource
. Si vous ne pouvez pas modifier le script, essayez de changer le shell qui l'exécute.la source
/bin/sh
appels/bin/dash
. Traditionnellement, on/bin/sh
appelle le/bin/bash
mode de compatibilité sh.SHELL := /bin/bash
en haut de mon Makefile.Dans Bourne shell (sh), utilisez le. commande pour rechercher un fichier
la source
source
ce n'est pas strictementsh
.. ./filename
. Sinon, j'obtiendrais unesh: 1: .: filename: not found
erreur lors de l'exécution des tests sur Travis-CI.Alors ce sera OK
la source
dpkg-reconfigure
peut ne pas être accessible à tous les utilisateurs, en particulier sur les systèmes qui ne sont pas basés sur Debiansource: not found
erreurs avec les anciens clients telnet après la mise à niveau de Debian, merci.L'
source
intégré est un bashisme. Écrivez ceci simplement comme à la.
place.par exemple
la source
Ce problème se produit car jenkins Execute Shell exécute le script via son / bin / sh
Par conséquent, / bin / sh ne connaît pas la "source"
Il vous suffit d'ajouter la ligne ci-dessous en haut de votre Execute Shell dans jenkins
la source
La
source
commande est intégrée à certains shells. Si vous avez un script, il doit spécifier quel shell utiliser sur la première ligne, par exemple:la source
J'ai rencontré cette erreur alors que j'essayais d'appeler la commande source à partir de #Jenkins execute shell.
source profile.txt
ousource profile.properties
Le remplacement de la commande source consiste à utiliser,
. ./profile.txt
ou. ./profile.properties
Remarque: il y a un espace entre les deux points (.)
la source
J'ai trouvé dans un Makefile gnu sur Ubuntu, (où / bin / sh -> bash)
J'avais besoin d'utiliser le. commande, ainsi que spécifier le script cible avec un préfixe ./ (voir l'exemple ci-dessous)
source ne fonctionnait pas dans cet exemple, je ne sais pas pourquoi car il devrait appeler / bin / bash ..
Ma variable d'environnement SHELL est également définie sur / bin / bash
Notez que cet exemple n'inclut pas le caractère de tabulation; a dû formater pour l'échange de pile.
la source
la source est une commande intégrée bash donc pour exécuter la commande source, vous pouvez vous connecter en tant que root.
sudo -s source ./filename.sh
la source
Sur Ubuntu, au lieu d'utiliser sh scriptname.sh pour exécuter le fichier, j'ai utilisé. scriptname.sh et cela a fonctionné! La première ligne de mon fichier contient:
#!/bin/bash
utilisez cette commande pour exécuter le script
la source
Cela peut vous aider, j'obtenais cette erreur car j'essayais de recharger mon
.profile
avec la commande. .profile
et il y avait une erreur de syntaxela source
Bourne shell (sh) utilise PATH pour localiser dans
source <file>
. Si le fichier que vous essayez de trouver ne se trouve pas dans votre chemin, vous obtenez l'erreur «fichier introuvable».Essayer:
la source
sh: 1: source: not found
nonfile not found