我的 login shell 是 bash,我尝试过在.bashrc
或.bash_profile
修改PATH
,但(shell-command-to-string "echo $PATH")
还是原来的值。
更新
我把下面的env
改成bash
还是不行,甚至把.desktop
里的Exec
改成bash -c 'emacs xxx'
也不行。。。
xxx
是我调整geometry
的参数,不影响。
当然,怎么改,从 terminal 启动是可以的,只不过我把修改PATH
的语句放到.bash_profile
后,terminal 也不行了,不应该吧。。。
补充一下细节,.bash_profile
是
[[ -f ~/.bashrc ]] && . ~/.bashrc
.bashrc
是
export PATH=XXX:$PATH
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# other things...
取决与你启动 Emacs 的方式,比如在 Windows 用快捷方式启动或在 Mac 上从 Spotlight 启动,操作系统不会去执行你的 .bash_profile
,也就不可能把其中的环境变量传给 Emacs;但从 Bash 启动,会把其环境变量传给 Emacs。
3 个赞
桌面环境调用的.desktop
。。。试了一下,在 terminal 里是可以的。。。
#!/usr/bin/env xdg-open
将环境变量放到 /etc/profile
试试,应该有用
我发现各个app launcher的行为都不一样……有的是干脆什么环境变量都不传,有的是只传递系统环境变量(/etc/profile
, /etc/zshenv
之类的),有的则是什么环境变量都给你传进去……
所以exec-path-from-shell
或者Spacemacs造的轮子还是有必要的,至少在非Windows系统下的GUI Emacs中有必要
1 个赞
spacemacs 现在会创建一个.env文件,会读取bash的环境变量
原来是为了解决这种问题, 之前还觉得这文件有点多余呢
1 个赞
为什么要写在一个文件里呢,每次都读一下会有什么问题?我知道如lazycat的帖子所说,一次启动中读取多次会有性能问题,那么存在一个变量里就好了,也仍然不用写在文件里?
为了安装后的启动速度。毕竟读个文件还是比执行shell命令要快。
我当时去除exec-path-from-shell
之后启动速度能减少200ms……相当可观了。