LINUX.ORG.RU

Как изменить значение переменной окружения (в bash)


0

1

В консоли результатом работы команды: PATH=«/usr/bin» будет изменение значения переменной PATH. А если в #!/bin/bash написать такую строку, то будет присвоено значение локальной переменной скрипта. Подскажите как изменить глобальную переменную скриптом.

Подскажите как изменить глобальную переменную скриптом.

Что значит «глобальную» ?

. ./script_change_PATH.sh
sdio ★★★★★
()
Ответ на: комментарий от sdio

Например скрипт такого содержания:


#!/bin/bash
#Изменяем приглашение консоли
PS1="\$ "

Не изменит приглашения консоли, как это бы сделала команда, вводимая в терминале PS1=«\$ ». А создаст переменную PS1 видную только в пределах скрипта (или я ошибаюсь).

podovalov5
() автор топика

В принципе нельзя изменить окружение родительского процесса из дочернего.

akk ★★★★★
()
Ответ на: комментарий от sdio

Точно! Теперь увидел. Я еще подумал, что за точка. Спасибо.

podovalov5
() автор топика
Ответ на: комментарий от Stanson

Вот твой man bash, покажи, где там написано, что переменная текущего процесса изменяется:

export -p
              The supplied names are marked for automatic export to the environment of subsequently executed commands.
              If the -f option is given, the names refer to functions.  If no names are given, or if the -p option  is
              supplied,  a  list  of  all  names that are exported in this shell is printed.  The -n option causes the
              export property to be removed from each name.  If a variable name is followed by =word, the value of the
              variable  is  set  to word.  export returns an exit status of 0 unless an invalid option is encountered,
              one of the names is not a valid shell variable name, or -f is supplied with a name that is not  a  func‐
              tion
kir64 ★★
()
Ответ на: комментарий от kir64

The supplied names are marked for automatic export to the environment of subsequently executed commands.

If a variable name is followed by =word, the value of the variable is set to word.

Что непонятно?

$ echo export TEST=123 > test.sh
$ . test.sh
$ echo $TEST
123
$ sh
$ echo $TEST
123
$ exit
$ export -n TEST
$ echo TEST=123 > test.sh
$ . test.sh
$ echo $TEST
123
$ sh
$ echo $TEST

$ exit

Разница понятна?

Stanson ★★★★★
()
Ответ на: комментарий от akk

Дебилушко, а ТС-то может какие программы или скрипты собирается из шелла запускать, для которых и нужно переменную окружения установить или поменять не?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Угу, молодец. А теперь внимательно прочитай, что требуется ТСу. export твой ему не нужен, про него и так все знают. ТСу требовался именно source, который он и получил первым же комментарием.

kir64 ★★
()
Ответ на: комментарий от kir64

export твой ему не нужен, про него и так все знают. ТСу требовался именно source, который он и получил первым же комментарием.

Ага, про export знает, а про source - нет. И переменные менять собирается чтобы однострочник какой-нибудь запустить наверно.

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