Страница 1 из 1

Как задать переменную окружения для одной программы

Добавлено: 2016-06-30 10:47:12
Voronok
Здравствуйте.

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

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

Код: Выделить всё

LD_PRELOAD=/lib_path/lib.so /run_path/command
Во фре пробую подобную конструкцию, но, естественно, не прокатывает

Код: Выделить всё

setenv LD_PRELOAD /lib_path/lib.so /run_path/command
setenv: Too many arguments.
Установить переменную LD_PRELOAD при загрузке не вариант, тогда вылетает другая версия программы. Вручную (скриптом) устанавливать переменную, запускать программу, потом очищать переменную тоже не вариант, т.к. программы дергаются из веб-интерфейса и могут запускаться одновременно. Хотя, надо попробовать, может они будут работать в разных сессиях, может и прокатит.

А вообще интересует как задать переменную окружения для одного запуска одной программы. Спасибо.

Как задать переменную окружения для одной программы

Добавлено: 2016-06-30 11:32:18
Voronok
Voronok писал(а): Хотя, надо попробовать, может они будут работать в разных сессиях, может и прокатит.
Прокатило.

Код: Выделить всё

#!/usr/bin/perl -w
#

use strict;
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);

print <<HTML;
Content-type: text/html\n
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
HTML

my $cmd_new = `LD_PRELOAD=/lib_path/lib.so; export LD_PRELOAD; /run_path/command_new`;
my $cmd_old = `/run_path/command_old`;


print "----------- new ---------<br>";
print "$cmd_new <br>";
print "----------- old ---------<br>";
print "$cmd_old <br>";
print "----------- end ---------<br>";
Работает.

Как задать переменную окружения для одной программы

Добавлено: 2016-06-30 16:48:19
Neus
Можешь поставить bash и "выкручиваться" как в Debian :)
Или это https://www.freebsd.org/cgi/man.cgi?que ... ormat=html