在Mac OS X Snow Leopard和Lion上的哪里可以找到.bashrc文件?


89

我想在我的Snow Leopard机器上安装rvm。

它说我需要在.bashrc文件中添加一行(我正在使用bash),但是.bashrc文件在哪里?


1
您应该将解决方案放入答案中并接受它(您必须等待一两天,SU才能允许您这样做),这样,具有相同问题的人可以查看问题才能看到它有答案。
Nifle 2010年

1
他的解决方案与票数最高的答案没有什么不同
。–大卫·考登

只是要确保,这不是“ Linux = .bashrc vs. Mac OS =。(bash_)profile”的问题,shell启动文件在Linux和Mac上工作相同,并且.bashrc文件是Session中更合适的位置具体设置。例如,使用tmux或screen,您可能没有登录会话,但仍希望使用别名。Mac感到与众不同的原因是,大多数Linux发行版都附带了已经委托(源)bashrc的系统配置文件脚本或框架配置文件。
eckes

Answers:


78

关于.bashrc以上问题:

在大多数系统上,~/.bashrc仅在启动交互式非登录 shell时使用。但是,当您启动一个新的外壳程序时,它通常是一个交互式登录外壳程序。由于这是一个登录外壳程序,因此将.bashrc被忽略。要使非登录外壳程序和登录外壳程序之间的环境保持一致,必须.bashrc.profile或中获取.bash_profile

请参见《 Bash参考手册》的第6.2节“ Bash启动文件”

作为交互式登录shell或--login调用

当Bash作为交互式登录shell或使用--login选项作为非交互式shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。读取该文件后,它将按该顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在且可读的第一个命令中读取并执行命令。

作为交互式非登录外壳程序调用

启动不是登录外壳程序的交互式外壳程序时,如果该文件存在,则Bash从〜/ .bashrc读取并执行命令。

因此,通常,您的〜/ .bash_profile包含以下行

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

在任何特定于登录的初始化之后(或之前)。

在我的Mac(Running Leopard)上,没有源可提供~/.bashrc。我必须自己添加此功能。

在某些系统和其他OS上,它们.bashrc是从全局/etc/profile或来源获得的/etc/bash_profile,或者是使用的模板文件来完成的/etc/skel

说实话之间的区别.bashrc,并.bash_profile没有很好地得到社会的理解。当许多开发人员说“将其添加到您的.bashrc中”时,他们真正的意思是“将其添加到您的.bash_profile中”。他们希望将功能添加到您的登录外壳程序(.bash_profile),而不是非登录外壳程序中。实际上,这通常并不重要,.bashrc可以接受放置配置。


该链接很好地概述了外壳的类型以及加载启动文件的时间-hacktux.com/bash/bashrc/bash_profile
studgeek 2012年

这里的“来源”是什么意思?
elgrego 2015年

@elgrego,这是一个很好的描述:源文件时(通过在命令行中输入source filename或。filename ),文件中的代码行的执行就像在命令行中打印的一样。参见tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski,2015年

60

因此事实证明,在Mac OS X Snow Leopard和Mac OS X Lion上,已加载的文件称为.profile,而不是.bashrc

您要执行的操作是在其中创建一个文件,~/.profile并将其命名为.profile(如果尚不存在)。

将您需要加载的所有信息放入每个bash实例中(谢谢,紫色像素)。

一些注意事项:

  1. 默认情况下,文件前面的句点将其标记为对Finder和ls命令不可见。要使用Terminal中的ls命令列出不可见的文件,请-a像这样使用as作为参数:ls -a
  2. ~符号代表/Users/YourUserNameYourUserName是用户名的简称。

编辑:克里斯·佩奇(正确的注释)指出,将.profile文件中放置的任何内容都将应用于您正在使用的任何外壳程序(即zhs,bash等)。如果您希望内容仅影响bash shell,请将内容放置在.bash_profile文件中而不是.profile文件中。


5
在您提出问题的第二天,即2010年6月1日,您的问题得到了[正确]的回答。一年多以后,您会回来并提供完全相同的答案并接受您自己的答案...
David Cowden 2012年

3
实际上,他的答案确实比2010年6月1日给出的答案更详细。他专门解决了Mac OS X上的问题,我认为这很有帮助。
webworm

3
请注意,如果.bash_profile您的主目录中已经存在一个.profile文件,则不会读取该文件!
Phani

我重新安装了Mac Os El capitan。没有配置文件。只需创建一个.profile文件即可。我个人将.bashrc重命名为.profile。
Nicolas Thery

4

你必须自己做.bashrc。您可以简单地使用文本编辑器创建一个.bashrc包含所需内容的文件(无扩展名)并将其保存在主目录(/Users/YourUserName/)中。


1
实际上,这没有用,但是您确实通过告诉我创建自己的文件向了正确的方向。在Snow Leopard配置上工作的文件是.profile,而不是.bashrc(由于某种原因未在此操作系统中加载)。我将在问题中发布详细的说明。谢谢!
Yuval 2010年

@Yuval:默认情况下,a .bashrc将起作用,但前提是没有.profile我想~/.profile默认存在。很高兴我能帮上忙!(并且您应该将解决方案放入答案中,并让以后的读者接受该问题)。
squircle

我认为您的评论只有在没有.profile的情况下才是不正确的。.bashrc可以在交互式非登录外壳中使用,也可以在源于.profile的情况下使用(.bash_profile可能更合适,因为.profile用于Bourne外壳)。.profile用于交互式非登录外壳程序。
Stefan Lasiewski,2010年

@Stefan,那听起来很正确。我不是专家:)
方圆形

2
没有人是;)。这些东西(.bashrc,.profile,.bash_profile,.bash_login,交互式登录shell,交互式非登录shell,非交互式shell)令人困惑,并且被许多Unix和shell脚本破坏和覆盖。
Stefan Lasiewski,2010年

3

我发现在OS 10.6.5中,bash设置位于“ / etc / bashrc”中。我认为这是shell的顶级规范。

但是,您需要一个root帐户才能对其进行修改。每个用户的本地规范“〜/ .bashrc”应以以下代码段开头,以读取和加载系统级bash设置:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

我通常在系统级bashrc中添加别名,以便所有用户也可以访问它们。除非他们不想使用您的快捷方式和别名。

祝好运!


2
/ etc / profile(由登录Shell运行)是一个全局bash启动脚本,适用于所有用户,并为登录Shell提供默认行为。它依次运行/ etc / bashrc,其中包含适用于登录和非登录Shell的自定义项。同样,单个用户应创建一个运行〜/ .bashrc的〜/ .bash_profile文件,这是大多数自定义设置所在的位置,而〜/ .bashrc应该运行/ etc / bashrc以继承非登录外壳程序的默认行为。
克里斯·佩奇

1
对于个人用户,最好将这些自定义添加到您的主目录中~/.bashrc,而不是/etc/bashrc/etc/bashrc是系统上所有用户的全局设置,可能不是您想要的。此外,Apple可能会出现并/etc/bashrc定期更改,这可能会破坏您的自定义设置。
Stefan Lasiewski,2015年

1

使用.profile文件添加将添加到linux .bashrc文件中的所有内容。

例如

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 

2
我建议您使用〜/ .bash_profile(而不是〜/ .profile),除非您确定要让您的自定义在其他shell中生效并且兼容。
克里斯·佩奇

只是要确保,这不是“ Linux = .bashrc vs. Mac OS =。(bash_)profile”的问题,shell启动文件在Linux和Mac上工作相同,并且.bashrc文件是Session中更合适的位置具体设置。例如,使用tmux或screen,您可能没有登录会话,但仍希望使用别名。Mac感到与众不同的原因是,大多数Linux发行版都附带了已经委托(源)bashrc的系统配置文件脚本或框架配置文件。
eckes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.