据我了解,在spawn "string command"
中调用xmonad
时,参数"string command"
实际上已传递给/bin/sh
。
有没有办法改变这种行为?
更具体地说,是否可以使spawn
调用的解释器实例知道某些预定义的环境变量(通常为SSH_AUTH_SOCK
和SSH_AGENT_PID
)?
当然,总是可以诉诸spawn "$VARIABLE=stuff; export $VARIABLE; string command"
,但每次都应该创建和导出变量,这让我感到困扰。
答案 0 :(得分:0)
严格回答您的第一个问题,safeSpawn
中的XMonad.Util.Run
函数(在xmonad-contrib
中)将运行命令而不将其传递给shell。
然而,就环境变量而言,这不应该产生太大的影响。在这两种情况下,生成的命令都应该继承XMonad进程的环境(shell的启动/ rc文件可以在生成的情况下进行调整)。
可以使用一般的Haskell工具设置启动过程的环境,例如: System.Posix.Process.executeFile
(如果您想要修改XMonad流程环境的副本,请System.Environment.getEnvironment
。