Как я могу заставить переменные среды «экспортироваться» в скрипт оболочки?

У меня есть несколько учетных записей Amazon EC2 и вы хотите быстро переключаться между переменными, такими как $EC2_HOME , используя скрипт.

У меня есть сценарий оболочки, настроенный так:

  • Используйте расширенное переключение для списка файлов, но не каталогов в bash
  • Перед выполнением этого действия разворачивайте дикие карты в команде
  • Почему я не могу назвать два псевдонима «?»?
  • Получить PID создания файла
  • Могут ли файлы bash иметь машинный язык?
  • Поиск файлов в алфавитном порядке перед заданной строкой
  •  #!/bin/sh export EC2_HOME=/home/me/.ec2 echo $EC2_HOME 

    Когда я запускаю скрипт, я знаю, что установлен EC2_HOME , но я думал, что использование export приведет к тому, что переменная будет EC2_HOME после завершения скрипта. Это не так, как работает echo $EC_HOME ничего не показывает.

    Я знаю, что это должно быть очень рудиментарное знание сценариев Linux, но я этого не знаю. Я пробовал искать связанные вопросы без везения – так что мои извинения, если это дубликат.

  • как установить ряд дисков в bash?
  • Получайте отдельную информацию о памяти из free -m comand
  • Как заблокировать root от запуска скрипта
  • Как установить псевдоним для каждого каталога?
  • Проблема с скриптом чтения строки в Cygwin
  • Вычислить разницу дат между последней измененной датой файла и СЕЙЧАС с использованием сценария оболочки
  • 2 Solutions collect form web for “Как я могу заставить переменные среды «экспортироваться» в скрипт оболочки?”

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

     . ./script 

    или

     source ./script 

    Когда вы запускаете скрипт, он получает свою собственную оболочку и собственную среду, которая исчезает снова, как только скрипт завершается. Чтобы сохранить переменные окружения, отправьте сценарий в текущую оболочку:

     $ source ./a.sh 

    или эквивалентно (но немного более портативно), используйте команду POSIX dot :

     $ . ./a.sh 

    Затем определения будут помещены в среду текущей оболочки и будут унаследованы любыми запускаемыми вами программами.

    Быть ближе к запуску скрипта . a.sh . a.sh найдет a.sh, выполнив поиск в каталогах в PATH среды PATH .


    Есть некоторые тонкости в том, как они себя ведут, и есть ли . и source те же (или присутствуют вообще). . ./a.sh . ./a.sh , безусловно, будет вести себя одинаково в каждой совместимой с POSIX оболочке, но source и . , и . a.sh . a.sh и . ./a.sh . ./a.sh , может варьироваться. Для source Bash и . одинаковы во всех случаях; для source zsh всегда проверяет текущий каталог ; ksh по существу схож.

    Если имя сценария задано как путь (содержащий / ), этот путь используется напрямую во всех случаях. Самая мобильно надежная вещь . ./script . ./script или . /path/to/script . /path/to/script .

    Linux и Unix - лучшая ОС в мире.