2015-06-01 1 views
1

Насколько я понимаю, при вызове spawn "string command" в xmonad аргумент "string command" фактически передан /bin/sh. Есть ли способ изменить это поведение?Передача переменных окружения в XMonad spawn

Более конкретно, можно сделать экземпляр интерпретатора наречено spawn осведомлены о некоторых предопределенных переменных окружения (как правило, SSH_AUTH_SOCK и SSH_AGENT_PID)? Конечно, всегда можно прибегнуть к spawn "$VARIABLE=stuff; export $VARIABLE; string command", но это беспокоит меня, что variabe следует создавать и экспортировать каждый раз.

ответ

0

Строго отвечая на ваш первый вопрос, функция safeSpawn в XMonad.Util.Runxmonad-contrib) выполнит команду, не передавая ее в оболочку.

Однако это не должно иметь большого значения в отношении переменных среды. В обоих случаях команда spawned должна наследовать среду процесса XMonad (которую файлы запуска/rc для оболочки могут настраивать в случае появления).

Можно установить среду запущенного процесса с помощью общих установок Haskell, например. System.Posix.Process.executeFileSystem.Environment.getEnvironment, если вы хотите сделать измененную копию среды процесса XMonad).

+0

Спасибо за информацию. Теперь, допустим, я уже начал этот процесс и хотел бы передать переменные среды в «среду процесса XMonad» (если это создает смысл). Кажется, что 'System.Posix.Process.executeFile' - это правильный инструмент, но можете ли вы дать мне простой пример того, как я могу его использовать? Предположим, я создал файл с '$ VARIABLE = stuff; export VARIABLE', если это помогает. –