Jaka jest różnica między wykonywaniem skryptu (np. / Some / script) za pomocą source /some/script
iw . /some/script
Bash?
147
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). Zobaczyszhelp source
ihelp .
pokaże te same informacje.man bash
a następnie poszukasz,source
zobaczysz, żesource filename [arguments]
jest to synonim. filename [arguments]
..
jest synonimemsource
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 akceptujesource
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.
źródło
#!/bin/sh
że nigdy nie powinieneś zakładać, że powłoka obsługuje nic poza funkcjami POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/...