Eu tenho acesso de usuário (sem raiz) a uma máquina Linux (Suse) onde desenvolvi alguns scripts bash e as regras correspondentes de preenchimento automático do bash.
Como os scripts pertencem apenas ao meu usuário e, portanto, eu preciso das regras completas "ativas" somente para mim (parte do fato de eu não ter acesso à gravação raiz), colocar o script bash_completion na /etc/bash_completion.d/
pasta não é uma opção.
No momento, eu nomeei meu arquivo .bash_completion.myscript
e o originei diretamente do meu .bashrc
, mas eu me pergunto se existe alguma outra maneira "padrão" de obter esses resultados, já considerados na implementação do bash.
Por exemplo, criando uma pasta /home/myuser/.bash_completion.d/
?
fonte
.bash_completion
é um arquivo e não um diretório. Comobash_completion.d
é um diretório, eu assumi que poderia apenasscp
meu localbash_completion.d
e renomeá-lo no servidor remoto, mas no próximo login, ele me disse que tinha que ser um arquivo.Aqui está como um usuário local pode ter um
~/.bash_completion.d/
diretório ativo.editar arquivo:,
nano ~/.bash_completion
adicione o seguinte:faça o diretório:
mkdir ~/.bash_completion.d
editar arquivo:,
~/.bash_completion.d/myscript
adicione o seguinte:source .bash_completion:
. ~/.bash_completion
Atualizar
Se você espera ter um
~/.bash_completion.d/
diretório vazio e deseja evitar a mensagem de errobash: /home/<username>/.bash_completion.d/*: No such file or directory
, adicione um teste de tipo de arquivo com[ -f "$bcfile" ]
.fonte
A resposta de Russell E Glaue é ótima, mas
~/.bash_completion
está incompleta.O problema é quando
~/.bash_completion.d/
está vazio e, subsequentemente,for f in ~/.bash_completion.d/*
imprime a seguinte mensagem de erro:A solução mais simples e portátil é pular o loop se o diretório estiver vazio:
fonte
Uma solução mais simples é usar a opção nullglob. Embora isso não seja portátil, nem as conclusões do bash. Portanto, a portabilidade não importa.
Além disso, convém usar aspas ao redor da variável ao fazer o sourcing. Isso lida com o caso em que o arquivo possui espaços com outros caracteres especiais.
fonte
nullglob
é) é útil para o leitor.Pelo menos bash-conclusão 2.8 e posterior habilitar opção para colocar conclusões locais Bash no diretório
Os nomes dos arquivos de conclusão ou os nomes simbólicos dos links devem corresponder aos respectivos nomes de comando. Essas conclusões são carregadas somente sob demanda. As conclusões armazenadas no arquivo
~/.bash_completion
são sempre carregadas.Referência: Consulte "Q. Onde devo instalar minhas próprias conclusões locais?" em https://github.com/scop/bash-completion/blob/master/README.md
fonte