我使用 macports 安装了 bash-completion,并在我的 .bash_profile 中遵循以下几行
if [ -f /opt/local/etc/bash_completion ]; then
. /opt/local/etc/bash_completion
fi
但是当我打开终端时,完成功能不起作用,但是它在获取 .bash_profile 或“bash -l”之后开始工作。
我正在运行 OSX 10.6,在终端偏好设置中,选择了“Shell 打开方式:默认登录 shell (/usr/bin/login)”。
解决了:我错过的是如何使用 bash-completion
确保在任何 PATH 操作之后添加它,否则 bash-completion 将无法正常工作。
当我在 PATH 操作之后移动这些行时,一切都正常工作。
答案1
我会使用chsh
命令来确保你的 shell 实际上是 Bash;如果你的 shell 是/bin/sh
而不是/bin/bash
,Bash 将模拟历史 shell,并且不会读取~/.bash_profile
。
从man bash
:
如果狂欢使用名称调用什,它试图模仿历史版本的启动行为什尽可能接近,同时符合 POSIX 标准。当作为交互式登录 shell 调用时,或者作为非交互式 shell 使用- 登录选项,它首先尝试读取并执行来自/etc/配置文件和〜/ .profile, 以该顺序。
[...]
由于 shell 调用如下什不会尝试读取和执行任何其他启动文件中的命令,--rc文件选项无效。