Предположим, что у меня есть этот скрипт
export.bash :
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
Когда я выполняю скрипт и пытаюсь получить доступ к $VAR
, я не получаю никакого значения!
echo $VAR
Есть ли какой-нибудь способ получить доступ к файлу,$VAR
просто выполнив export.bash без его получения?
bash
shell
unix
environment-variables
tarrsalah
источник
источник
source
илиeval
или ...)man source
он не будет работать, потому чтоsource
встроен в bash, вам нужно запуститьhelp source
Ответы:
Быстрый ответ: Нет.
Но есть несколько возможных обходных путей.
Наиболее очевидный, который вы уже упомянули, - это использовать
source
или.
выполнить скрипт в контексте вызывающей оболочки:Другой способ заключается в том, чтобы вместо скрипта среды установить скрипт печати, который установит переменную среды:
Третий подход состоит в том, чтобы иметь скрипт, который устанавливает переменные среды внутри вас, а затем вызывает указанную команду с этой средой:
Этот последний подход может быть весьма полезным, хотя он и неудобен для интерактивного использования, поскольку он не дает вам настроек в вашей текущей оболочке (со всеми другими настройками и историей, которые вы создали).
источник
Чтобы сначала экспортировать переменную VAR, наиболее логичным и подходящим способом является получение переменной:
или
Теперь при отражении от основной оболочки это работает
Теперь мы сбросим VAR
Теперь мы выполним скрипт для источника переменной и затем удалим ее:
код: cat test-export.sh
Вот один из способов
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Экспорт ограничен сценарием, который выполняет экспорт в вашей главной консоли - поэтому, если задание cron, я бы добавил его, как консоль, как показано ниже ... для командной части все еще сомнительно: вот как бы вы это сделали запустить из вашей оболочки:
В вашей командной строке (если у export.bash есть несколько значений echo)
кот v1.sh
Теперь, пока это для вашего использования - вы можете сделать переменные доступными для ваших скриптов в любое время, выполнив псевдоним bash, например:
добавьте это к вашему .bashrc
источник ваш файл bashrc, и вы можете сделать, как указано выше, в любое время ...
Во всяком случае вернемся к остальному ..
Это сделало его доступным во всем мире, а затем выполнил сценарий ..
просто сделайте вывод, а затем запустите экспорт!
кошка export.bash
Теперь внутри скрипта или вашей консоли запустите:
Пытаться:
Несколько значений, если вы знаете, что вы ожидаете в другом скрипте, используя метод выше:
кошка export.bash
кошка test-export.sh
Теперь результаты
и окончательное окончательное обновление для автоматического назначения прочитайте переменные:
Скрипт: cat test-export.sh
источник
казнить
Любые переменные, которые вы получите из файла после этого, будут экспортированы в вашу оболочку.
Когда вы закончите, выполните. Это отключит режим allexport.
источник
bash source export
в GoogleНайден интересный и удобный способ экспорта переменных среды из файла:
в
env.vars
:тестовый скрипт:
источник
Другой обходной путь, который, в зависимости от случая, может быть полезен: создание другого bash, который наследует экспортируемую переменную. Это частный случай ответа @Keith Thompson, будут все эти недостатки.
export.bash:
Сейчас:
источник
. ./export.bash
bash
как дочерняя для текущей оболочки. И так как ранееVAR
был экспортирован, этот вызов будет включать переменную. Конечно, если вы наберете выйдет. Вы проверяли?exit
VAR
Ответ - нет, но для меня я сделал следующее
скрипт: myExport
псевдоним в моем .bashrc
Тем не менее, вы получаете его, но, возможно, таким образом, он более полезен и интересен для кого-то еще.
источник
Может быть, вы можете написать функцию в ~ / .zshrc, ~ / .bashrc.
Из-за использования переменной снаружи, вы можете избежать записи скриптового файла.
источник