2015-06-01 139 views
1

我的理解是,当调用spawn "string command"xmonad时,实际上将参数"string command"传递给/bin/sh。 有没有办法改变这种行为?将环境变量传递给XMonad spawn

更具体地说,是否有可能让由spawn调用的解释器实例知道一些预定义的环境变量(通常为SSH_AUTH_SOCKSSH_AGENT_PID)? 当然,它总是可以求助于spawn "$VARIABLE=stuff; export $VARIABLE; string command",但它困扰我,应该每次创建和导出变种。

回答

0

严格回答你的第一个问题,XMonad.Util.Runxmonad-contrib)中的safeSpawn函数会运行一个命令,而不会将它传递给shell。

但是,就环境变量而言,这应该没有多大区别。在这两种情况下,衍生命令都应该继承XMonad进程的环境(shell的启动/ rc文件可以在产生的情况下调整)。

可以使用普通的Haskell工具设置启动过程的环境,例如, System.Posix.Process.executeFile(如果要制作XMonad进程环境的修改副本,则需要System.Environment.getEnvironment)。

+0

感谢您的信息。现在,让我们说我已经开始了这个过程,并且我想将环境变量传递给“XMonad过程的环境”(如果这使感官)。看起来'System.Posix.Process.executeFile'是正确的工具,但你能给我一个简单的例子来说明如何使用它吗?假设我使用'$ VARIABLE = stuff创建了一个文件;导出VARIABLE'如果有帮助。 –

相关问题