Как я могу установить переменную среды всего для одной команды в оболочке рыбы?

Возможно, лучше сохранить вещи простыми - т.е. не заставить DNS сделать больше, чем это, как предполагается. Я довольно осторожен на добавляющем материале особенно когда дело доходит до безопасности. Иногда меньше больше. Главная причина позади моих взглядов состоит в том, потому что DNS и SSL не находятся в том же домене и не имеют схожей функциональности, ни цели.

49
задан 21 September 2015 в 22:17
4 ответа
begin; set -lx EDITOR vim; crontab -e; end
27
ответ дан 28 November 2019 в 19:37

Не понимаю, почему это не должно работать: env EDITOR = vim crontab -e
Это полностью обходит оболочку.

72
ответ дан 28 November 2019 в 19:37

То есть из Документации

SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".

Используйте env команда.

env SOME_VAR=1 command

Вы также можете объявить локальную переменную в блоке, которая не будет обходить оболочку.

begin
  set -lx SOME_VAR 1
  command
end
10
ответ дан 28 November 2019 в 19:37

в зависимости от определения функции be , это может привести к сбою

begin
  set -lx RAILS_ENV staging
  be rails r "p ENV['RAILS_ENV']"
end

Чтобы она работала:

function be --description 'Runs bundle exec' --no-scope-shadowing
  bundle exec $argv
end

См. Объяснение к - no-scope- Параметр shadowing

-S или --no-scope-shadowing позволяет функции получать доступ к переменным вызывающих функций. Обычно любые переменные внутри функции, имеют то же имя, что и переменные из вызывающей функции «затенены», и их содержимое не зависит от вызывающей функции.

2
ответ дан 28 November 2019 в 19:37

Теги

Похожие вопросы