#macos #command-line #terminal #env-file
Вопрос:
Здесь Mac OS. На терминале я создаю следующий .env
файл:
export FIZZ=foo
export BUZZ="$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO"
Потом я бегу source .env amp;amp; echo $FIZZ
и вижу:
foo
Пока все идет хорошо. Но теперь я бегу echo $BUZZ
, и результат такой:
a0.pQJ4oYWP.m4qdRKRQlyO
Я явно заключил значение for BUZZ
в двойные кавычки ( "$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO"
), так почему же оно выводится как "a0.pQJ4oYWP.m4qdRKRQlyO"
?
Ответ №1:
Я смог воспроизвести то, что вы видели. Я почти уверен, что у вас возникли проблемы с подстановкой переменных окружения, которую выполняет bash. (запускается символом»$».) Я знаю два способа «исправить» это.
Один из них состоит в том, чтобы избежать символов «$» с предшествующей обратной косой чертой. export BUZZ=$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO
Другой способ-изменить способ цитирования строки. Используйте одинарные кавычки вместо двойных кавычек… export BUZZ='$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO'
.
Двойные кавычки позволяют продолжить подстановку переменных среды, одинарные кавычки предотвращают это.