При выполнении сценария оболочки в Ubuntu (или любой среде unix-типа) как я могу сохранить экспорт вне сценария?

#linux #shell #scripting #export

#linux #оболочка #сценарии #экспорт

Вопрос:

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

Теперь я создал .scripts папку в моем домашнем каталоге и добавил ее к своему пути, экспортировав ее в .bashrc , поэтому каждый раз, когда я запускаю новый экземпляр терминала, я могу выполнять любые пользовательские сценарии, которые я туда добавляю.

Теперь один (фактически три) из этих сценариев настраивает все мои пути, связанные с разработкой, экспорты, а также cd команду, которая переключается на соответствующую папку для этого разработчика. Однако (еще раз простите меня, если вы уже знаете это …) скрипт выполняется в своем собственном «сеансе» (за неимением лучшего слова), Поэтому, хотя все переменные среды и подобные им настроены и выполняются (что было доказано внедрением echo вызовов повсюду), когда скрипт завершается, и я возвращаюсь обратно к терминалу, где я выполнил скрипт, этот другой сеанс больше не существует, и, за исключением очистки экрана и эхо-вывода, нет больше ничего не показывает, что скрипт когда-либо запускался.

Теперь я не уверен, что вообще возможно расширить экспортированные переменные за пределы этого сценария обратно в вызывающий «экземпляр» или есть какой-то флаг, который я могу установить для выполнения сценария в существующем сеансе, поэтому я в тупике.

Теперь, если это невозможно, возможно ли, по крайней мере, написать сценарий или настроить значок, который может запускать новое окно терминала, затем выполнить сценарий, но оставить окно открытым и инициализированным?

Спасибо!

Отметьте

Комментарии:

1.по соглашению ваши личные сценарии хранятся в ~/bin/ , и это может быть частью вашего, $PATH но, конечно, это зависит от вас

2. Полезно знать! Я перемещу их туда и удостоверюсь, что он находится в path.

Ответ №1:

Поместите сценарий в определение функции в ~/.bashrc . Например

 enter_dev_env() {
        cd /home/foo/src
        export foo="bar"
}
  

Ответ №2:

Запустите команду с исходным кодом.

источник foo.sh