Ich muss die Umgebungsvariablen festlegen, normalerweise tun wir dies durch
source script.sh
Aber jetzt automatisiere ich es während des Startvorgangs und es sieht so aus, als würde der Root standardmäßig mit sh
Shell booten . Wie beziehe ich dieses Skript ein sh
?
Antworten:
Der Punktbefehl '
.
' entspricht demsource
Befehl C Shell (und Bash) . Es wird von POSIX spezifiziert (siehedot
) und von den Bourne- und Korn-Muscheln unterstützt (undzsh
, glaube ich).Beachten Sie, dass die Shell mit nach der Datei sucht
$PATH
, die Datei jedoch nur lesbar und nicht ausführbar sein muss.Wie in den Kommentaren unten angegeben, können Sie natürlich einen relativen oder absoluten Pfadnamen für die Datei angeben. Nach Namen, die einen Schrägstrich enthalten, wird nicht gesucht
$PATH
. Damit:. /some/where/somefile . some/where/somefile . ./somefile
könnten alle zu finden , verwendet werden ,
somefile
wenn es in den drei verschiedenen vorgegebenen Stellen bestanden (wenn Sie ersetzen könnte.
mitls -l
und eine Datei aufgeführt).Pedanten der Welt vereinen sich! Ja, wenn das aktuelle Verzeichnis ist das Stammverzeichnis, dann
/some/where/somefile
und./some/where/somefile
auf die gleiche Datei verweisen würde - mit dem gleichen realen Weg - auch ohne Links, symbolische oder harter, eine Rolle zu spielen (und würde so../../some/where/somefile
).quelle
. somewhere/something
, muss ein Unterverzeichnis vorhanden sein,./somewhere
das eine Datei enthält,something
damit der Befehl gefunden werden kann.tl; dr Mit
sh
(im Gegensatz zubash
) muss das Argument einen Schrägstrich enthalten:source ./script.sh
nicht nursource script.sh
. Esscript.sh
sei denn , in gefunden werdenPATH
.Der
.
Befehl Dot ( ) ist inbash
und vorhandensh
. Zusätzlichbash
Aliase es alssource
. Aus dembash
Handbuch:https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-source
https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html#index-_002e
Von POSIX :
quelle