仅在获取 .bash_profile 后才进行 bash-completion

仅在获取 .bash_profile 后才进行 bash-completion

我使用 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文件选项无效。

相关内容