安装时右室VM收到以下消息:
* WARNING: You have '~/.profile' file, you might want to load it,
to do that add the following line to '/home/dotancohen/.bash_profile':
source ~/.profile
我很担心,因为我的 ~/.profile 文件包含xmodmap ~/.Xmodmap
我显然不想在每次打开新 shell 时运行的文件(交换我的 CapsLock 和 ESC 键)。
为什么明智的 RVM 开发人员会建议.profile
采购.bash_profile
?
答案1
.profile
.bash_profile
就它们的执行时间而言,它们是相同的:它们在您登录时执行。不同之处在于,只有 bash运行.bash_profile
; Bourne 风格的 shell(dash、ksh 等)运行.profile
。.profile
如果.bash_profile
不存在,Bash 本身就会运行。
即使您使用 bash 作为登录 shell,.profile
它通常也是您以图形模式登录时执行的 shell — 许多发行版都将 X 会话启动脚本设置为sh
在.profile
.
因此建议使用.profile
而不是.bash_profile
执行诸如定义环境变量之类的操作。除非您绝对需要 bash 特定的功能,否则只需将所有内容放入.profile
.但即使你这样做,保留 a 也是有原因的.bash_profile
,那就是当 bash 加载它时,它不会加载.bashrc
,即使它是交互式的。因此,对于大多数人来说,~/.bash_profile
应该由这两行组成:
. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
你不应该xmodmap
逃避.profile
。当您打开新 shell 时,不会执行此操作,但会执行,例如,当您使用带有 X11 转发的 SSH 远程登录时。不幸的是,当您以图形模式登录时,没有加载标准文件。 Debian 加载~/.xsessionrc
(我认为这适用于所有显示管理器,除了 Gdm 加载~/.xprofile
);其他发行版有不同的设置。如果您需要跨发行版可移植性,将桌面环境配置为xmodmap
在启动时执行可能会更容易。如果您所做的只是交换 CapsLock 和 Ctrl,则可以使用大多数现代桌面环境提供的接口的 XKB 设置来完成。
答案2
请记住,bash(1) 是唯一读取 的 shell .bash_profile
,其他 Bourne shell 衍生版本仅读取.profile
。如果您有时使用另一个 shell,您会希望保留.profile
.