在Windows上的原生emacs中,我如何指定环境变量以在emacs中启动我的shell而不修改emacs'环境?在我的具体情况下,我想将HOME
设置为zsh的cygwin特定值,而不修改emacs认为配置文件存在的位置。
我尝试过将shell更改为env -u HOME ...\zsh.exe
之类的内容,但这似乎会中断(shell-command)
(它似乎涉及参数顺序)。
如果存在此命令,则可能会执行我想要的操作:
(setq explicit-zsh-environment '("HOME" nil))
我已经阅读了一些相关问题,例如(How can I run Cygwin Bash Shell from within Emacs?),但对我而言不同寻常的部分是我所有的配置文件都是cygwin - ln
- ed或windows - {{ 1}} - 编辑成git repo,cygwin和windows对符号链接采取截然不同的方法。
答案 0 :(得分:2)
这是关于在Emacs中运行zsh
作为shell(即不关于从zsh shell启动Emacs),并且让劣质zsh进程看到的环境与Emacs有的环境?
如果是这样,您可以在启动进程时绑定 C-h v process-environment
变量。 e.g:
(let ((process-environment '("HOME=/tmp")))
(call-interactively 'shell))
$ echo $HOME
/tmp
答案 1 :(得分:0)
来自Emacs manual:
Emacs将新shell发送文件
~/.emacs_shellname
的内容作为输入(如果存在),其中 shellname 是从中加载shell的文件的名称。例如,如果您使用bash
,则发送给它的文件为~/.emacs_bash
。如果找不到此文件,Emacs会尝试使用~/.emacs.d/init_shellname.sh
。
因此对于zsh
,您可以将~/.emacs.d/init_zsh.sh
放在内容中:
export HOME=/tmp