首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要在~/..bash_profile中添加~/.profile?

为什么要在~/..bash_profile中添加~/.profile?
EN

Unix & Linux用户
提问于 2016-01-06 14:55:50
回答 2查看 5.5K关注 0票数 5

在安装RVM时,会收到以下消息:

代码语言:javascript
复制
* 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开发人员建议在.bash_profile中采购.profile

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-01-07 01:08:59

.profile.bash_profile在执行它们的时间上是相同的:它们是在登录时执行的。区别在于,只有bash运行.bash_profile;Bourne风格的shell(破折号、ksh等)运行.profile。如果.profile不存在,Bash本身就运行.bash_profile

即使您使用bash作为登录shell,.profile通常也是在以图形模式登录时执行的,- many发行版设置X会话启动脚本以在sh和load .profile下运行。

因此,建议使用.profile而不是.bash_profile来做诸如定义环境变量之类的事情。除非您绝对需要bash特定的特性,否则只需将所有内容都放在.profile中即可。但是,即使您这样做了,也有理由保留一个.bash_profile,即当bash加载它时,它不会加载.bashrc,即使它是交互式的。因此,对于大多数人来说,~/.bash_profile应该由以下两行组成:

代码语言:javascript
复制
. ~/.profile
case  $- in *i*) . ~/.bashrc;; esac

您不应该从xmodmap运行.profile。这不是在打开一个新shell时执行的,但是它是执行的,例如,当您使用X11转发远程登录时。不幸的是,当您以图形模式登录时,没有加载标准文件。Debian加载~/.xsessionrc (我认为这适用于所有显示管理器,除了Gdm,后者加载~/.xprofile );其他发行版有不同的设置。如果您需要跨发行版可移植性,那么在桌面环境启动时配置您的桌面环境以执行xmodmap可能更容易。如果您所做的只是交换CapsLock和Ctrl,这可以通过大多数现代桌面环境提供接口的XKB设置来完成。

票数 14
EN

Unix & Linux用户

发布于 2016-01-06 16:07:37

记住bash(1)是唯一读取.bash_profile的shell,其他Bourne导数只读取.profile。如果有时使用另一个shell,则需要保留.profile

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/253634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档