Niedawno się tego nauczyłem
. ./.a.a
i ./.a.a
jest taki sam.
Jednak próba source source .a.a
powoduje błąd. IMO, .
będąc pseudonimem Bash, source
nie powinno zachowywać się inaczej, więc czego mi brakuje?
Bonus, dlaczego jest . .
OK, podczas gdy source source
nie jest?
. script
i./script
są tym samym? Z pewnością nie są . Ponadto.
nie jest aliasem dosource
. Jest na odwrót..
jest standardem isource
jest aliasem.
..
polecenia, ale mam na myśli, żesource
jest to po prostu lepsze polecenie, kiedy widziszsource somefile
w skrypcie, od razu wiesz, co robi to polecenie, ale. somefile
nie tylko nie jest oczywiste, co robi, możesz łatwo ominąć.
postać całkowiciebash: .: .: is a directory
na. .
to ok należy wyjaśnić.. ./.a.a .
być szczery. : -DA rodzajów quizu, jeśli chcesz. :-) Połączone pytanie jest niesamowite, wielkie dzięki. Co dało mi ten pomysł: fakt, że nie widziałem żadnej różnicy w wykonywaniu plików w ten sposób i fakt, że gdzieś czytałem,.
jest pseudonimemsource
. :-)Odpowiedzi:
Nie można po prostu wymienić
.
sięsource
wszędzie; gdybydziała, możesz zastąpić pierwszy
.
(przynajmniej w Bash):Drugi
.
reprezentuje bieżący katalog, nie można zastąpić, że zsource
(zwłaszcza nie./
zsource
tak zrobiłeś).byłoby OK, gdybyś miał plik wywołany
source
w bieżącym katalogu, zawierający coś znaczącego dla twojej bieżącej powłoki. Nie widzę, jak. .
by było OK ...Ponadto,
. ./.a.a
i./.a.a
nie są takie same, druga forma działa.a.a
w osobnej powłoce. Zobacz Jaka jest różnica między pozyskiwaniem („.” Lub „source”) a uruchamianiem pliku w bash? dla szczegółów.źródło
source
to słowo kluczowe powłoki, które powinno być używane w ten sposób:source
file
gdziefile
zawiera prawidłowe polecenia powłoki. Te polecenia powłoki będą wykonywane w bieżącej powłoce, tak jakby zostały wpisane z wiersza poleceń. Teraz.
file
robi dokładnie to samo.Poza tym
.
sam oznacza „bieżący katalog roboczy” jak w./xyz
(„xyz
w tym katalogu”) luba/b/./c/./d
(który jest identycznya/b/c/d
).Poza tym
.
w nazwie pliku ma znaczenie jedynie konwencją, ponieważ.foobar
oznacza „ukryty” plik (nie tak naprawdę…) lub jak wfoobar.pdf
, co oznacza format pliku poprzez przyrostek (tutaj.pdf
).Te różne znaczenia nie mogą być zamieniane.
źródło
.
nie jest w żadnym wypadku przestarzałe. W przeciwieństwiesource
do przenośnego, zdefiniowanego przez POSIX sposobu pozyskiwania pliku.source
Alias danej powłoki i mogą być albo nie występuje (na przykładdash
), lub odmiennie od normy.
.