Не импортированная переменная среды с фиксированной версией bash

У меня есть простой скрипт bash, который изменяет переменную среды, которая будет использоваться последующим двоичным файлом. Ниже мой основной сценарий:

#!/bin/bash
export DBROOT="NEW_DIRECTORY" 
export TERM=xterm
su  -c " <test_process> " - omni

Переменная DBROOT используется "test_process" в качестве переменной среды. Кроме того, DBROOT определяется с другим значением "OLD_DIRECTORY" в качестве глобальной переменной среды. Цель сценария - заставить "test_process" использовать значение NEW_DIRECTORY (экспортированное значение).

С не исправленной версией bash, тест работал. Однако после исправления ошибки "Shellshock" в bash test_process не считывает экспортированное значение DBROOT и глобальные переменные среды. Это как если бы "test_process" игнорировал экспортированные и глобальные переменные.

У меня нет исходного кода "test_process". Версия bash - версия 2.05b.0(1)-релиз (версия rpm - bash-2.05b-41.7.i386.rpm), и я работаю на Red Hat Enterprise Linux AS выпуск 3

Обновление: после перекомпиляции последних источников bash 2.05b путем установки определения времени компиляции

#define NON_INTERACTIVE_LOGIN_SHELLS

скрипт снова заработал. Без этого определения Баш неверно истолковал - символ после su команда

1 ответ

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

Я предлагаю попробовать:

su -c "DBROOT='NEW_DIRECTORY' TERM='xterm' <test_process> " - omni

Это перемещает настройки среды в оболочку, управляемую suвместо того, чтобы полагаться на su передавать окружающую среду.

Другие вопросы по тегам