Odpowiedzi:
source
i .
są synonimami w Bash .
Dla każdego, kto chciałby sprawdzić, czy polecenia są po prostu synonimami i niczym więcej, spójrz na kod źródłowy , powiedzmy na wersję 4.3, i sprawdź plik builtins/source.def
. Można przeczytać, że zarówno z wbudowanych poleceń source
i .
użyć tę samą funkcję: source_builtin
.
.
to tradycyjne polecenie źródłowe, odziedziczone po starożytnej powłoce Bourne'a. source
jest tylko wbudowanym bash'em, który robi dokładnie to samo co .
, prawdopodobnie dlatego, że jest bardziej czytelny ( .
sam może być trudny do zauważenia za pomocą małej czcionki). Zobaczysz help source
i help .
pokaże te same informacje.
man bash
a następnie poszukasz, source
zobaczysz, że source filename [arguments]
jest to synonim . filename [arguments]
.
.
jest synonimem source
w bash, ale nie w POSIX sh, więc powinieneś użyć, .
jeśli twój skrypt jest uruchamiany przez / bin / sh. Zauważ, że bash twierdzi, że działa jak POSIX sh, gdy jest wywoływany jako / bin / sh, ale akceptuje source
bez reklamacji.
To zachowanie mnie ugryzło, skrypty przetestowane przy użyciu bash, ponieważ / bin / sh zawodzą, na przykład, gdy działają pod popiołem.
#!/bin/sh
że nigdy nie powinieneś zakładać, że powłoka obsługuje nic poza funkcjami POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/...