Ich habe ein Skript, das sh
Shell verwendet. Ich erhalte eine Fehlermeldung in der Zeile, in der der source
Befehl verwendet wird. Es scheint source
nicht in meiner sh
Shell enthalten zu sein.
Wenn ich explizit versuche, source
von der Shell zu laufen, bekomme ich:
sh: 1: source: not found
Sollte ich irgendwie "source" installieren? Habe ich eine falsche Version von sh
?
source
eine "falsche Version" ist.source: not found
bedeutet auch, dass dersource
Befehl ordnungsgemäß ausgewertet wurde, die gelesene Datei jedoch nicht vorhanden ist.source
da dies eine Funktion der Shell ist. Es kann nicht als externer Befehl implementiert werden.Antworten:
/bin/sh
ist normalerweise eine andere Shell, die versucht, The Shell nachzuahmen. Viele Distributionen verwenden/bin/bash
fürsh
, es unterstütztsource
. Unter Ubuntu/bin/dash
wird jedoch verwendet, was nicht unterstützt wirdsource
. Die meisten Muscheln verwenden.
anstelle vonsource
. Wenn Sie das Skript nicht bearbeiten können, versuchen Sie, die Shell zu ändern, auf der es ausgeführt wird.quelle
/bin/sh
Anrufen/bin/dash
. Traditionell/bin/sh
genannt/bin/bash
ist Modus sh-Kompatibilität.SHELL := /bin/bash
oben in meinem Makefile hinzufügen .Verwenden Sie in der Bourne-Shell (sh) die. Befehl zum Quellen einer Datei
quelle
source
es nicht strengsh
.. ./filename
. Andernfalls würdesh: 1: .: filename: not found
beim Ausführen von Tests auf Travis-CI eine Fehlermeldung angezeigt.Dann wird es OK sein
quelle
dpkg-reconfigure
ist möglicherweise nicht für alle Benutzer zugänglich, insbesondere auf Systemen, die nicht auf Debiansource: not found
Fehler mit alten Telnet-Clients nach dem Debian-Upgrade wurden behoben, danke.Das
source
Eingebaute ist ein Bashismus. Schreiben Sie dies einfach als.
stattdessen.z.B
quelle
Dieses Problem tritt auf, weil Jenkins Execute Shell das Skript über / bin / sh ausführt
Folglich kennt / bin / sh "Quelle" nicht.
Sie müssen nur die folgende Zeile oben in Ihrer Execute Shell in Jenkins hinzufügen
quelle
Der
source
Befehl ist in einige Shells integriert. Wenn Sie ein Skript haben, sollte es angeben, welche Shell in der ersten Zeile verwendet werden soll, z.quelle
Ich konfrontiert diesen Fehler , während ich auf Anruf versuchte Quelle Befehl von #Jenkins Shell auszuführen.
source profile.txt
odersource profile.properties
Ersatz für Quellbefehl ist zu verwenden,
. ./profile.txt
oder. ./profile.properties
Hinweis: Zwischen den beiden Punkten (.) Ist ein Leerzeichen.
quelle
Ich habe in einem Gnu-Makefile unter Ubuntu gefunden (wo / bin / sh -> bash)
Ich musste das benutzen. Befehl und geben Sie das Zielskript mit dem Präfix ./ an (siehe Beispiel unten).
Quelle hat in dieser Instanz nicht funktioniert, nicht sicher warum, da es / bin / bash aufrufen sollte.
Meine SHELL-Umgebungsvariable ist ebenfalls auf / bin / bash gesetzt
Beachten Sie, dass dieses Beispiel das Tabulatorzeichen nicht enthält. musste für den Stapelaustausch formatieren.
quelle
source ist ein in bash integrierter Befehl. Um den Quellbefehl auszuführen, können Sie sich als Root anmelden.
sudo -s source ./filename.sh
quelle
Unter Ubuntu habe ich anstelle von sh scriptname.sh zum Ausführen der Datei verwendet. scriptname.sh und es hat funktioniert! Die erste Zeile meiner Datei enthält:
#!/bin/bash
Verwenden Sie diesen Befehl, um das Skript auszuführen
quelle
Dies kann Ihnen helfen. Ich habe diesen Fehler erhalten, weil ich versucht habe, meinen
.profile
mit dem Befehl neu zu laden,. .profile
und es einen Syntaxfehler gabquelle
Bourne Shell (sh) verwendet PATH, um in zu lokalisieren
source <file>
. Wenn sich die Datei, die Sie beschaffen möchten, nicht in Ihrem Pfad befindet, wird der Fehler "Datei nicht gefunden" angezeigt.Versuchen:
quelle
sh: 1: source: not found
nichtfile not found