怎样确保读取了.profile?

从上面这里继续讨论。这里发现.profile中的export没有生效,查资料的结果显示:

  1. .profile只用于login shell? 而很多时候打开一个shell时不是login shell?
  2. bash用.bash_profile而非.profile
  3. 与具体使用了哪种shell无关的设置应该放在.profile中?但是怎样保证它一定会load呢?(见1.)

一头雾水中……

:rofl: 反正俺的做法是,什么设置都在 .profile.bash_profile 里各放一份,也不知道科学不科学。

我用的zsh,刚刚没有.bash_profilecp .profile .bash_profile之后,果然没什么效果。。

修改 profile 后正常在下次开机时由 login 读入,需要在当前立即生效就手动 source。


GUI 㮚面也是一个 login shell,从 GUI 开的终端直接从 GUI 继承环境,而不是从 login 程序启动。 开 login shell 只有用 loginsu --login

实在无法确定的话,在 .profile里检查一个变量,没有的话就运行并在结尾export,其他bash zsh等profile里检查变量,没有的话就source .profile

不过我的mac没遇见过问题,可能是linux相关?

这样的确会有

先在.zshrcsource .profile凑合一下了。。

并不需要在 rc 里 source,重启电脑以后就生效了

搞清楚了,bash没这个问题,zsh确实不读.profile,因为不兼容,所以它用.zprofile代替,解决办法是[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'(让zsh在sh模式下source .profile来避免兼容问题,同时之后用户用起来仍然是zsh)