Як встановити кілька змінних env для команди bash


108

Я повинен встановити змінні EC2_HOME та JAVA_HOME перед тим, як запустити команду (ec2-описують регіони)

Як це зробити за один раз?

Відповіді:


164

Ви можете одноразово встановити vars для однієї команди, поставивши їх у командному рядку перед командою:

$ 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
Нагев

Чи існує обмеження кількості змінних, які ви можете надати заздалегідь?
Сем Томас

Тільки максимальна межа довжини командного рядка, яка в Linux є досить великою.
Кріс Додд

2

Як і інша система * nix, ви можете додати функцію у файлі .bashrc у своєму каталозі HOME.

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

Тепер ви можете запустити свою програму за допомогою наступної команди:

startec2

4
Наскільки мені відомо, це створює лише bash змінні і не спрацює.
TNW
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.