从上面这里继续讨论。这里发现.profile
中的export
没有生效,查资料的结果显示:
.profile
只用于login shell? 而很多时候打开一个shell时不是login shell?- bash用
.bash_profile
而非.profile
? - 与具体使用了哪种shell无关的设置应该放在
.profile
中?但是怎样保证它一定会load呢?(见1.)
一头雾水中……
从上面这里继续讨论。这里发现.profile
中的export
没有生效,查资料的结果显示:
.profile
只用于login shell? 而很多时候打开一个shell时不是login shell?.bash_profile
而非.profile
?.profile
中?但是怎样保证它一定会load呢?(见1.)一头雾水中……
反正俺的做法是,什么设置都在 .profile
和 .bash_profile
里各放一份,也不知道科学不科学。
我用的zsh,刚刚没有.bash_profile
,cp .profile .bash_profile
之后,果然没什么效果。。
修改 profile 后正常在下次开机时由 login 读入,需要在当前立即生效就手动 source。
GUI 㮚面也是一个 login shell,从 GUI 开的终端直接从 GUI 继承环境,而不是从 login
程序启动。
开 login shell 只有用 login
或 su --login
。
实在无法确定的话,在 .profile里检查一个变量,没有的话就运行并在结尾export,其他bash zsh等profile里检查变量,没有的话就source .profile
不过我的mac没遇见过问题,可能是linux相关?
这样的确会有
先在.zshrc
里source .profile
凑合一下了。。
并不需要在 rc 里 source,重启电脑以后就生效了
搞清楚了,bash没这个问题,zsh确实不读.profile
,因为不兼容,所以它用.zprofile
代替,解决办法是[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
(让zsh在sh模式下source .profile
来避免兼容问题,同时之后用户用起来仍然是zsh)