OK, also source
führt das Skript in der aktuellen Shell und .
separat aus, wie im Ausführen des Skripts mit "." Und mit "source" beschrieben , aber speziell in meiner .bashrc
Datei habe ich:
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ -f ~/.git-completion.bash ] && source ~/.git-completion.bash
[ -s ~/.autojump/etc/profile.d/autojump.sh ] && source ~/.autojump/etc/profile.d/autojump.sh
Kann ich dies ersetzen durch:
[ -f ~/.bash_aliases ] && . ~/.bash_aliases
[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash
[ -s ~/.autojump/etc/profile.d/autojump.sh ] && . ~/.autojump/etc/profile.d/autojump.sh
Funktioniert das unter OS X - ist das das "POSIX" -Problem?
Ich habe es versucht und die oben genannten scheinen immer noch unter Ubuntu zu funktionieren (also funktionieren sie tatsächlich mit beiden source
und .
das heißt, sie geben mir die gewünschte Funktionalität in der Shell). Soll ich eins über das andere wählen oder fehlt mir etwas?
FWIW, unter OS X beziehe ich meine .bashrc
von meiner .bash_profile
.
source
das Skript in der aktuellen Shell und.
separat ausgeführt wird"? Beide führen es in der aktuellen Shell aus. sonst hätte es keinen SinnAntworten:
Dies ist die Definition von POSIX für
.dot
:Unter Berücksichtigung der oben, könnte man genauso gut ersetzen Sie einfach Ihre
[ -f ./file ] && source ./file
mit. ./file
ganz. Wenn die Datei nicht vorhanden ist, erhalten Sie beim Anmelden eine Benachrichtigung. Dies sind wahrscheinlich Informationen, die Sie haben möchten, denke ich.Wenn Sie den Test lieber behalten möchten, können Sie natürlich Folgendes tun:
quelle
$_
, das gefällt mir. :)test -f /.file && . $_
hier gezeigten Ansatz verwendet$_
ist nicht von POSIX standardisiert. Die 8 speziellen Parameter sind$@
,$*
,$#
,$$
,$!
,$?
,$-
und$0
.$_
wird ausdrücklich weggelassen . Ihr falscher Kommentar hat eine Frage ausgelöst .In
bash
,.
undsource
sind Synonyme. Wenn Sie sich denbash
Quellcode und die Dateibuiltin/source.def
ansehen, können Sie dieselbe interne Funktion sehen.
undsource
verwendensource_builtin
:source
Ist aber nicht POSIX-kompatibel. Wenn Ihr Skript mit POSIX aufgerufen wird/bin/sh
, sollten Sie.
stattdessen POSIX verwendensource
. Da POSIX die Shell nicht einschränkt, funktionieren alle oben genannten Skripte.Persönlich benutze ich immer
.
stattsource
. (Viele Skripte, die ich geschrieben habe, laufen untercron
).quelle
.
normalerweise "besser" ist als die Verwendungsource
, wie @abonet sagt,source
ist die Suche viel einfacher. Da Punkte in vielen Sprachen Satzzeichen sind, kann das Auge sie leicht überspringen. Deshalb benutze ich liebersource
.