为什么每次打开终端以使别名正常工作时都必须获取.bashrc?[重复]


25

我将此行添加到我的~/.bashrc文件中。

alias myserver='ssh davidfaux@davidfaux.com'

但是,当我打开终端并运行时myserver,终端会抱怨

-bash: myserver: command not found

但是,当我获取.bashrc文件的源代码(. .bashrc)时,别名有效。

但是,我不想每次打开终端使别名正常工作时都源文件。我如何做到这一点?


3
此评论说明了原因。该问题告诉您如何解决。
ughoavgfhw 2012年

非常感谢!我不知道启动外壳会按顺序执行这些文件。确实,添加. .bashrc.bash_profile作品中。
David Faux 2012年

@ughoavgfhw可以/应该将您的评论更改为答案吗?这样可以将其标记为答案。
soxman 2012年

Answers:


25

简而言之,您将别名放在错误的文件中.bashrc,这就是为什么您需要保持运行源以使别名在任何新的登录终端实例中运行的原因。

摘自Chris Johnsen的评论,为什么.bashrc不能自动运行?

默认情况下,Terminal通过/ usr / bin / login启动外壳程序,这使该外壳程序成为登录外壳程序。在每个平台(不仅是Mac OS X)上,bash都不使用.bashrc作为登录shell(仅/ etc / profile和.bash_profile,.bash_login,.profile存在且可读的第一个)。这就是为什么“将源〜/ .bashrc放入.bash_profile中”是标准建议的原因。

有关更多信息,请参见手册页bash

man bash

然后在“ INVOCATION”部分下查看。


我需要重新启动才能正常工作吗?因为我添加source ~/.bashrc了.bash_profile,但仍然面临着相同的问题……
Michiel 2014年

1
在大多数情况下,您无需打开新的终端窗口即可使更改生效,更改仅在新打开的窗口中生效。
MrDaniel 2014年

11

你总是可以放

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

我认为该文件~/.profile~/.bash_profile在Mac上。

糟糕,您可以将东西放进.profile.bash_profile


另一个答案中提到了这一点-您为什么不确定这些事情?
user151019 2014年

请阅读以下非常类似的问题:apple.stackexchange.com/q/12993/22003并在其中添加一些即兴之处
2014年

@danielAzuelos等待; 您要我在另一页上发表评论还是根据其他问题更新我的答案?
迪伦2014年

@Mark我只是在非常假想的意义上思考-就像如果某人的终端进程不知道.profile的来源怎么办?他们的终端可能不会一开始就启动,但是仍然有可能……就像有人在他们的/ usr / bin / login或其他地方进行黑客入侵一样。
迪伦2014年

→Dylan:请阅读这个非常相似的问题:apple.stackexchange.com/q/12993/22003,您会找到“也许”的答案。
2014年
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.