2015-04-02 2 views
0

У меня есть файл .env с кучей переменных, и я просто наткнулся на ошибку.Установка переменных с пробелами внутри .env

Одна из переменных имеет пробелы.

TEST="hello world" 

Так что, когда я запускаю это, learned about in this answer here.

env $(<.env) 

Я получаю эту ошибку.

env: world"': No such file or directory 

Как установить переменные с пробелами внутри .env?

+0

Вам просто нужно процитировать содержимое файла: 'env '$ (<. Env)" ' –

+0

@glennjackman' env' $ (<. Env) "echo $ TEST', кажется, печатает пустую строку. – ThomasReggi

+0

@glennjackman, @ThomasReggi: Это не может работать с примером эха, потому что подстановка '$ TEST' выполняется перед запуском' echo' в текущей оболочке, которая не имеет набора переменных 'TEST'. Когда запускается 'echo',' TEST' * устанавливается *, но 'echo' не знает, что делать с' $ TEST'. –

ответ

1

Если ваша команда просто команда оболочки, вы можете запустить команду в субоболочке, как это:

(. .env ; echo "$TEST") 

source или . не имеют встроенные никаких проблем с заданием, содержащими пробела. Он установит переменные в файле .env в среде текущей оболочки.

В более вероятном случае вызова внешней программы, вы также должны добавить «экспорт» к каждому заданию в файле env так:

export TEST="hello world" 

Это необходимо потому, что source не экспортирует назначенные переменные как env, т. е. они установлены внутри подоболочки только, но не в среде другого процесса, запущенного внутри этой подоболочки.

+0

У меня нет файла 'test.env'. Я не понимаю, что это такое. Скажем, мой 'cmd' - это просто' echo $ TEST', поэтому из вашего примера '(.env; echo $ TEST)' не работает, он дает мне '-bash: world: command not found'. – ThomasReggi

+0

Ах, извините, я думал, что '.env' был просто расширением. Я изменю. –

Смежные вопросы