linux — Глобальная переменная окружения недоступна для команды bash, выполняемой внутри переполнения стека

Я пытаюсь вернуть значение глобальной переменной среды внутри скрипта bash, который выполняется изнутри PHP (запускается как sudo).

Выполнение команды printenv Из скрипта bash видно, что глобальная переменная не установлена. Я понимаю, что sudo сбрасывает окружающую среду.

Пожалуйста, рассмотрите следующую настройку;

Определить глобальную среду var

root@test:/# export HEY=hello

Проверить наличие вар

root@test:/# printenv | grep HEY
HEY=hello

Пожалуйста, рассмотрите эту функцию PHP

Функция PHP

function testAction() {

define('TEST_CMD', '/usr/bin/sudo /usr/local/test/bin/');
$command = 'bash_script';
$query = TEST_CMD.$command;

exec ($query, $output, $return_var);

var_dump( $output );
var_dump( $return_var );
echo exec('whoami');

}

Содержание /etc/sudoers.d/admin

admin   ALL=(ALL)       ALL
admin   ALL=NOPASSWD:/usr/local/test/bin/*

Содержание /usr/local/test/bin/bash_script

#!/bin/bash
printenv
echo $HEY
exit

Я пытался положить Defaults env_keep +="HEY" внутри /etc/sudoers.d/admin тоже, но это тоже не работает.

ОС убунту 14.04

Есть идеи?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]