Как установить несколько переменных env для команды bash

110

Я должен установить переменные EC2_HOME и JAVA_HOME перед запуском команды (ec2-describe-region)

Как мне сделать это за один раз?

SamLosAngeles
источник

Ответы:

166

Вы можете одноразово установить переменные для одной команды, поместив их в командной строке перед командой:

$ EC2_HOME=/path/to/dir JAVA_HOME=/other/path ec2-describe-regions

Кроме того, вы можете экспортировать их в среду, и в этом случае они будут установлены для всех будущих команд:

$ export EC2_HOME=/path/to/dir
$ export JAVA_HOME=/other/path
$ ec2-describe-regions
Крис Додд
источник
7
Обратите внимание, что, хотя это кажется необычным, вы также можете писать export EC2_HOME=/path JAVA_HOME=/path.
Уильям Перселл
4
Одноразовый вариант весьма полезен в скриптах. Просто примечание для тех, кому нужно выполнить команду от имени пользователя root или другого пользователя, переменные должны идти после sudo или пользователя. Напримерsudo -u somebody CVSROOT=:ext:somebody@12.18.127.22:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
Nagev
Есть ли ограничение на количество переменных, которые вы можете указать через добавление?
Сэм Томас
Просто ограничение максимальной длины командной строки, которое в Linux довольно велико.
Крис Додд
2

Как и в другой системе * nix, вы можете добавить следующую функцию в свой .bashrc файл в вашем HOME каталоге.

function startec2(){
    EC2_HOME=/path/to/dir
    JAVA_HOME=/other/path 
    ec2-describe-regions
}

Теперь вы можете запустить свою программу с помощью следующей команды:

startec2
gzh
источник
4
Насколько мне известно, это создает только переменные bash и работать не будет.
TNW