Я могу назначить переменную DISPLAY, запустив командную строку:

export DISPLAY=:2
echo $DISPLAY (returns 2)
hostname (returns opt2)

В моем #!Скрипт /bin /bash с использованием той же команды:

echo $DISPLAY (returns 2)
export DISPLAY=:3 
echo $DISPLAY (returns 3)
hostname (returns opt2)

НО, когда я делаю echo $DISPLAY после завершения скрипта, я все равно получаю "2" в качестве переменной DISPLAY; другими словами, сценарию не удалось переназначить переменную DISPLAY от "2" до "3".

Если я запускаю свой bash-скрипт второй (третий, четвертый ....) раз, я всегда получаю:

echo $DISPLAY (returns 2)
export DISPLAY=:3
echo $DISPLAY (returns 3)
hostname (returns opt2)

Таким образом, хотя скрипт говорит, что назначил переменную DISPLAY "3", это не так!

Как мне заставить мой bash-скрипт назначить переменную DISPLAY?

1 ответ1

4

Экспорт переменных влияет только на подоболочки. Вы не можете воздействовать на родительские оболочки таким образом. Если вы хотите, чтобы ваш скрипт мог изменять переменные в текущей оболочке, вы должны получить его.

. ./some_script.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .