Відповіді:
begin; set -lx EDITOR vim; crontab -e; end
set -lx date '12/04/2012'
begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
env SOME_VAR=1 command
Не розумійте, чому це не повинно працювати:
env EDITOR=vim crontab -e
Це повністю обходить оболонку.
env SOME_VAR=1 echo $SOME_VAR
Це з Документації
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
залежно від визначення 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-range-shadowing
-S або --no-range-shadowing дозволяє функції отримувати доступ до змінних викликових функцій. Зазвичай будь-які змінні всередині функції, які мають те саме ім’я, що і змінні з викликової функції, є "затіненими", а їх зміст не залежить від викличної функції.