Импорт переменных среды из другого сценария в текущую оболочку

en fedora solo hay un comando useradd, adduseres solo un enlace simbólico a useradd.

puedes comprobarlo con el siguiente comando:

ls -ld /usr/sbin/adduser

la salida del comando:

[root@fedora28 ~]# ls -ld /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 Feb 6 05:37 /usr/sbin/adduser -> useradd
1
19.09.2018, 06:02
2 ответа

Вот пример

#!/bin/bash

CURR_DIR=$(dirname $(readlink -f $0))
. ${CURR_DIR}/set-env-script.sh

# Add here your code...
0
27.01.2020, 23:42

Ваш подход не работает по двум причинам.

Прежде всего, давайте предположим, что ваш env _script.sh содержит оператор для установки переменной,например

X=5

Если вы выполните оператор

$(cat env_script.sh)

вы просите bash запустить содержимое этого скрипта как команды, т.е. выполнить программу со смешным названием X=5.

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

. env_script.sh

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

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

1
27.01.2020, 23:42

Теги

Похожие вопросы