Кто-нибудь может мне объяснить, что делает оболочка в двух примерах А) и Б) ниже? Это, очевидно, ведет себя по-разному, но я не могу выяснить, почему результат отличается.
Пример:
у нас будет скрипт в нашем текущем каталоге, названный bla.shтолько одной командой:
echo $ hello
А) Начинается
как: ./bla.sh
дает:./bla.sh hello
Б)
Начинается как: . bla.sh
дает:-bash hello
Так как я использую это в скрипте, второй вывод (из-за "-" перед -bash) убивает команду. Конечно, простое --раньше ${...}помогло, но мне бы очень хотелось понять, чем обусловлен выход в первую очередь.
Я люблю Баш. И ви [м]. Но я отвлекся ...
Более того, если вы измените среду bash в bla.sh, эти изменения будут учтены после. бла.ш но не после ./bla.sh. это потому что . Bla.sh работает в контексте текущего bash, тогда как ./bla.sh работает как подпроцесс.