Mac OS X .bashrc无法正常工作


77

.bashrc我的主目录中有一个单行文件:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

但这不是在创建别名。为什么会这样呢?

Answers:


101

在OSX中,.bash_profile使用代替.bashrc

是的,该.bash_profile文件应位于/Users/YourName/
(换句话说,~/.bash_profile

例如, /Users/Aaron/.bash_profile


11
这不是正确的答案。别名不会被继承,因此,如果仅在.bash_profile中定义别名,则不会在非登录shell中定义别名(例如,在bash中运行bash时)。
LaC 2011年

1
或者可以使用bash_aliases,其效果与将别名放入bashrc中相同,但更易于管理:ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
在我的.bash_profile中,我只写了一行别名(bashrc的某种形式)->source ~/.bashrc
Eric Hodonsky '16

86

.[bash_]profile并且.bashrc可以在OS X和Linux的使用。前者在外壳为登录外壳时加载;后者则不是。真正的区别在于,Linux在用户登录图形会话时运行登录外壳,然后在您打开终端应用程序时,这些外壳是非登录外壳。而OS X不会在图形登录时运行shell,而当您从Terminal.app运行shell时,这就是登录shell。

如果您希望别名在登录外壳程序和非登录外壳程序中都可以使用(并且通常这样做),则应将它们放在.bashrc中并将.bashrc 源放在您的.bash_profile中,并带有如下一行:

[ -r ~/.bashrc ] && source ~/.bashrc

这适用于任何使用bash的系统。


15
请注意,+ 1表示.bashrc中的所有内容将再次针对子shell(以及subsub-,subsubsub-sub等)运行,因此例如PATH=$PATH:/my/private/binaries会导致PATH膨胀。请参阅方法以解决。
戈登·戴维森,

2
真正。由于导出的实例变量是继承的,因此只需将其设置.profile为即可.bashrc
LaC 2011年

1
@LaC您能解释一下_因为导出的实例变量是继承的,所以我只是将它们设置为.profile_...?
萨姆

1
@sam,我不知道“实例”来自哪里。我只是说“导出变量”。不幸的是,我无法编辑该评论。
LaC 2014年

2
@dinosaur:“ -r”检查文件是否可读。
mhvelplund

7

或创建一个指向.bashrc的符号链接.bash_profile

ln -s .bashrc .bash_profile

2

由于在Mac OS X上.bash_profile使用而不是别名,因此没有别名.bashrc

因此,您有两种选择:

  • 将别名放入您的 ~/.bash_profile

  • 或通过将以下行添加到中来.bashrc从您.bash_profile的来源.bash_profile

    . ~/.bashrc


1

Mac OS X Yosemite上,运行以下命令:

vi ~/.profile

然后添加以下行:

source ~/.bashrc

现在保存并关闭.profile,然后打开一个新的Terminal窗口或运行:

source ~/.profile

另请参阅此答案。它适用于v10.1.0.3。


这仅是对四年前答案的重新表述。
G-Man

当然,阅读和应用它很容易。加上一点点贡献-因为我的OS Yosemite上没有其他提到的文件。
里卡多
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.