如何修复终端未在 OS X Lion 上加载 ~/.bashrc [关闭]
Posted
技术标签:
【中文标题】如何修复终端未在 OS X Lion 上加载 ~/.bashrc [关闭]【英文标题】:How to fix Terminal not loading ~/.bashrc on OS X Lion [closed] 【发布时间】:2011-12-08 11:09:21 【问题描述】:每当我使用 Cmd + T 在终端中打开一个新选项卡时,它都会在与前一个选项卡相同的目录中打开 bash。当我在 ~
目录中时,这工作正常,但如果我在其他任何地方,我会收到错误加载 .bashrc
Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$
看起来.bashrc
是通过相对路径而不是绝对路径加载的,因为如果我这样做source ~/.bashrc
,一切都会顺利进行。
我认为这是与 OS X Lion 相关的问题,因为在从 Snow Leopard 升级之前,我没有遇到同样的问题。但这可能是由于终端总是在~
打开,我不记得它是否试图打开同一个目录。
但是问题还是一样,我怎样才能让终端通过绝对路径而不是相对路径加载~/.bashrc
?
【问题讨论】:
这个问题应该移到apple.SE(如果可能的话?),而不是关闭。 @Sparr 我完全同意你的观点,但版主只提出新问题而不是旧问题。见讨论here 【参考方案1】:终端打开一个登录外壳。这意味着,~/.bash_profile
将被执行,~/.bashrc
不会。
大多数系统上的解决方案是在~/.bash_profile
中“要求”~/.bashrc
:只需将此 sn-p 放在您的 ~/.bash_profile
中即可:
[[ -s ~/.bashrc ]] && source ~/.bashrc
【讨论】:
谁能解释[[ -s /file/path ]]
在做什么?向 Google 寻求解释并不容易。
来自man bash
: -s file 如果文件存在且大小大于零,则为真。
"终端打开一个登录外壳" - 其他类型的操作系统外壳是什么?我在哪里可以找到有关它的更多文档?
有所谓的“交互式外壳”和“登录外壳”。您的 bash 手册 (man bash
) 在 INVOCATION 一章中讨论并解释了它(只需在调用 man bash
后通过键入 /INVOCATION
搜索 INVOCATION
)
我看不出一个与代码执行情况有关的问题(由一行代码解决)是如何与编程问题网站“偏离主题”的。【参考方案2】:
将.bashrc
重命名为.profile
(或将后者软链接到前者)也应该可以解决问题。见here。
【讨论】:
或者你可以对它们进行符号链接:cd && ln -s ./.bashrc ./.profile
请注意,符号链接对文件路径很敏感,我相信使用上述语法是可行的,但要确保在任何情况下都可以使用绝对路径。
呃,不是吗?这些文件有不同的用途。如果您在 .profile
中有 Bash 语法,您将打破常规 sh
。【参考方案3】:
我的~/.bash_profile
中有以下内容:
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
如果我使用的是 .bashrc
而不是 ~/.bashrc
,我会看到与您看到的相同的症状。
【讨论】:
以上是关于如何修复终端未在 OS X Lion 上加载 ~/.bashrc [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 OS X lion 上使用 python 配置 MySQL
Mac OS X 10.7 (Lion) 中的 Nano 语法高亮显示?
如何在 mac os x 10.7.2 Lion 上安装 PIL
如何使用 brew 在 OS X Lion 上安装 OpenCV