Bash não está executando o script em /opt/local/etc/bash_completion.d/

8

Eu queria ter autocompletar bash para comandos git, então eu soltei um arquivo de script bash em /opt/local/etc/bash_completion.d/.

Quando eu abro um novo Terminal, o arquivo de script /opt/local/etc/bash_completion.d/não é executado. Verifiquei que o arquivo de script está funcionando, executando:

source /opt/local/etc/bash_completion.d/git-completion.bash

Há alguma etapa faltando aqui para perguntar ao OS X para executar scripts automaticamente /opt/local/etc/bash_completion.d/?

hanxue
fonte

Respostas:

7

Para carregar automaticamente todos os scripts de um diretório, coloque isso no seu ~/.bashrcarquivo

# LOAD ALL AUTOCOMPLETIONS IF ANY ARE INSTALLED
if [ -d /usr/local/etc/bash_completion.d ]; then
    for F in "/usr/local/etc/bash_completion.d/"*; do
        if [ -f "${F}" ]; then
            source "${F}";
        fi
    done
fi
frnhr
fonte
3

Sim, você precisa carregá-los no seu shell.

Isso é feito editando ~/.bashrcou ~/.bash_profileadicionando o comando . filenamepara cada arquivo. Isso carrega o arquivo e disponibiliza as funções. ou seja, coloque seu comando de origem em um desses arquivos.

Note que você não deveria estar adicionando /opt/local/etc/bash_completion.d/como apenas os macports deveriam escrever lá. Coloque os arquivos em seu diretório inicial, por exemplo~/.bash_completion.d/git-completion.bash

Marca
fonte