LINUX.ORG.RU

Что не так с export в скрипте?

 


0

1

Если мне не изменяет память, то чтобы значение переменной сохранялось за пределами скрипта после его исполнения, надо использовать команду export. Беру скрипт типа такого:

#!/bin/sh

export MUMUR="/home/mumur/bin"
export PATH=$PATH:$MURMUR

Исполняю его. После исполнения переменная MUMUR не существует, PATH остается та, что была до этого по умолчанию. Вроде они должны были бы сохраниться? Или я в чем-то тут туплю?

Или я в чем-то тут туплю?

Да, переменные окружения лишь наследуются от родительских процессов их потомками. Нельзя из дочернего процесса (запуск скрипта в оболочке) поменять переменную окружения родителя (шелл).

Можно использовать команду source myscript.sh, тогда export выполнится в самом шелле и будет работать, как ожидалось.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 2)

чтобы значение переменной сохранялось за пределами скрипта после его исполнения, надо использовать команду export

не так, export переводит переменную в переменные окружения

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

если нужно выполнение команд из скрипта в рабочем шеле, можно сделать так

source script.sh
# или
. script.sh
тогда скрипт будет прочтен как текстовый файл, а команды из него выполнятся в рабочем шеле

CaHbl4
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.