source
is a bash shell built-in command that executes the content of the file passed as argument, in the current shell. It has a synonym in .
(period).
Syntax
. filename [arguments] source filename [arguments]
$ whatis source source: nothing appropriate. $ man source No manual entry for source $ source bash: source: filename argument required source: usage: source filename [arguments]
Es existiert und ist lauffähig. Warum gibt es in Ubuntu keine Dokumentation darüber? Was tut es? Wie kann ich eine Dokumentation dazu installieren?
source
is a bash shell built-in command that executes the content of the file passed as argument, in the current shell. It has a synonym in .
(period).
Syntax
. filename [arguments] source filename [arguments]
Achtung! ./
und source
sind nicht ganz dasselbe .
./script
Führt das Skript als ausführbare Datei aus und startet eine neue Shell, um es auszuführensource script
liest und führt Befehle aus dem Dateinamen in der aktuellen Shell- Umgebung ausAnmerkung: ./script
ist nicht . script
, aber . script
==source script
Es ist nützlich, den Befehl 'type' zu kennen:
> type source source is a shell builtin
Wann immer etwas in eine Shell eingebaut wird, ist es Zeit zu tun man bash
.
. (a period) is a bash shell built-in command that executes the commands from a file passed as argument, in the current shell. 'source' is a synonym for '.'.
From Bash man page:
. filename [arguments] source filename [arguments] Read and execute commands from filename in the current shell environment and return the exit status of the last command exe‐ cuted from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing file‐ name. The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi‐ tional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read.
'source' is the long version of '.' command. On the bash prompt one can do:
source ~/.bashrc
to reload your (changed?) bash setting for current running bash.
Short version would be:
. ~/.bashrc
The man page:
. filename [arguments] source filename [arguments] Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the short builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read.
source
Befehl führt das bereitgestellte Skript (ausführbare Berechtigung ist nicht zwingend erforderlich ) in der aktuellen Shell-Umgebung aus, während ./
das bereitgestellte ausführbare Skript in einer neuen Shell ausgeführt wird.
source
Befehl haben ein Synonym . filename
.
Um es klarer zu machen, werfen Sie einen Blick auf das folgende Skript, das den Alias setzt.
#! /bin/bash alias myproject='cd ~/Documents/Projects/2015/NewProject'
Jetzt haben wir zwei Möglichkeiten, dieses Skript auszuführen. Mit nur einer Option kann der gewünschte Alias für die aktuelle Shell unter diesen beiden Optionen erstellt werden.
./make_alias
Machen Sie das Skript zuerst ausführbar.
chmod +x make_alias
./make_alias
alias
**nothing**
Hoppla! Alias ist mit der neuen Shell weg.
Lass uns mit der zweiten Option gehen.
source make_alias
source make_alias
oder
. make_alias
alias
alias myproject='cd ~/Documents/Projects/2015/NewProject'
Ja, Alias ist eingestellt.
Im Zweifelsfall verwenden Sie am besten den info
Befehl:
[root@abc ~]# info source BASH BUILTIN COMMANDS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by - accepts -- to signify the end of the options. The :, true, false, and test builtins do not accept options and do not treat -- specially. The exit, logout, break, continue, let, and shift builtins accept and process arguments beginning with - with- out requiring --. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with - as invalid options and require -- to prevent this interpretation. : [arguments] No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned. . filename [arguments] source filename [arguments] Read and execute commands from filename in the current shell environment and return the exit status of the last command exe- cuted from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing file- name. The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi- tional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read.
Geben Sie den Befehl "help source" in Ihre Shell ein.
Sie erhalten folgende Ausgabe:
source: source filename [arguments] Execute commands from a file in the current shell. Read and execute commands from FILENAME in the current shell. The entries in $PATH are used to find the directory containing FILENAME. If any ARGUMENTS are supplied, they become the positional parameters when FILENAME is executed. Exit Status: Returns the status of the last command executed in FILENAME; fails if FILENAME cannot be read.
Aus dem Linux-Dokumentationsprojekt, Advanced Bash Scripting Guide,
Kapitel 15 - Befehle und eingebaute Interna :
Quelle, . (Punktbefehl):
Wenn dieser Befehl von der Befehlszeile aus aufgerufen wird, wird ein Skript ausgeführt. In einem Skript lädt ein Quelldateiname die Datei Dateiname. Beim Sourcing einer Datei (Punktbefehl) wird Code in das Skript importiert, der an das Skript angehängt wird (derselbe Effekt wie die # include-Direktive in einem C-Programm). Das Nettoergebnis ist das gleiche, als ob die "Quelltextzeilen" physisch im Hauptteil des Skripts vorhanden wären. Dies ist nützlich, wenn mehrere Skripts eine gemeinsame Datendatei oder Funktionsbibliothek verwenden.
Wenn die Quelldatei selbst ein ausführbares Skript ist, wird sie ausgeführt und gibt die Steuerung an das Skript zurück, das sie aufgerufen hat. Ein ausführbares Skript mit Quellenangabe kann zu diesem Zweck eine Rückgabe verwenden.
Für diejenigen, die mit der Programmiersprache C vertraut sind, wirkt sich das Beschaffen einer Datei ähnlich aus wie die #include
Direktive.
Beachten Sie auch, dass Sie Positionsargumente an die Datei übergeben können, die Sie als Quelle verwenden.
$ source $filename $arg1 arg2
Es sei darauf hingewiesen, dass, obwohl seine ein fantastischer Befehl, weder source
noch die Stenografie von .
würde Quelle mehr als eine Datei, bedeutung
source *.sh
oder
. script1.sh script2.sh
wird nicht funktionieren
Wir können mit for
Schleifen zurückgreifen, aber die ausführbare Datei würde oft ausgegeben, mehrere Befehle erstellt oder ausgegeben.
Schlussfolgerung: Es werden source
nicht mehrere Dateien als Eingabe verwendet. Das Argument muss eins sein.
Was ist IMHO saugt.