如何修复终端未在 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

如何在 Mac OS X Lion 上安装 Python 库“gevent”

制作 Mac OS X El Capitan 的U盘引导安装