Значение /etc/launchd.conf setenv, содержащее пробелы

В моем файле /etc/launchd.conf я добавил эти строки, чтобы выяснить, как именно создавать глобальные переменные среды, значения которых содержат пробелы.

setenv foo1 123456
setenv foo2 "123456"
setenv foo3 123\ 456
setenv foo4 "123\ 456"
setenv foo5 "123 456"
setenv foo6 "123\\ 456"
setenv foo7 '123456'
setenv foo8 '123 456'
setenv foo9 '123\ 456'
setenv foo10 '123\\ 456'

Чтобы посмотреть, что застряло и каковы результаты, я запустил set | grep foo. Результат:

foo1=123456
foo2='"123456"'
foo7=''\''123456'\'''

У меня нет идей. Это вообще возможно? Если да, то каков синтаксис?

Вот аналогичный вопрос на StackOverflow.
Спасибо. Я заставил его работать для одной переменной среды, но я не знаю, как создать несколько переменных среды в одном и том же файле plist, поэтому я пытаюсь сделать несколько вещей, чтобы заставить это работать в данный момент.
Мне нужно было создать две переменные среды, поэтому я создал их в двух отдельных файлах plist. Это чрезвычайно многословная замена чего-то настолько простого, что Apple отобрала у нас в Mountain Lion.

Ответы (1)

Используйте exportвместо setenv.

export foo1=123456
export foo2="123456"   # foo2 should now have the same value as foo1   
export foo3=123\ 456
export foo4="123 456"  # foo4 should now have the same value as foo3
Это не работает . Команда export(которая не принимает никаких аргументов) просто экспортирует всю среду в виде серии команд, подходящих для передачи в оболочку. Например:SHELL="/bin/bash"; export SHELL;
Как видно из вашего примера, экспорт экспортирует только указанную переменную, а не всю среду.