source
не является стандартной командой оболочки; это не одна из «специальных встроенных утилит» в POSIX.1 spe c. В некоторых оболочках есть команда с именем source
, но она не обязательна.
Существует аналогичная стандартная команда .
, которая выполняет файл в контексте текущего ракушка. Если вы используете bash -specifi c source
, вы обычно можете просто изменить его на стандартный .
без каких-либо дальнейших изменений
. ./login
Обратите внимание, что .
ищет $PATH
для запуска файла; он не будет искать текущий каталог, если не указано иное. Также обратите внимание, что вы обычно используете .
только для сценариев, которые имеют побочные эффекты, такие как установка переменных среды, и в контексте, подобном тому, что вы показываете, где каждая команда выполняется в отдельной оболочке, это не будет иметь более продолжительных эффектов.
Поскольку выходные данные команды aws ecr get-login
представляют собой одну команду docker login
, которая напрямую не изменяет контекст оболочки, вы также можете просто запустить ее как скрипт оболочки
sh ./login