Essa dica é particularmente útil pra quem tem um .bashrc
com várias funções gigantes que já poderiam ser scripts separados, ou que baixou programas “standalone”/AppImage da internet e quer poder iniciá-los diretamente do terminal.
De bônus, facilita para que suas funções de uso pessoal sejam feitas em outras linguagens de programação, além do shell.
O procedimento
- Crie uma pasta de na qual você vai colocar esses arquivos. Minhas recomendação é
/home/usuario/.local/bin
, que é onde os programas em Python instalados sem root geralmente são colocados, mas qualquer outra serve. - Edite o arquivo
.xprofile
(crie se não existir) e acrescente as linhas.
PATH="$PATH:$HOME/.local/bin"
export PATH
- Deslogue e logue novamente. Vai ser possível executar arquivos das pastas que você especificou, sem dar o caminho completo.
Bônus: conversão de funções do .bashrc
Antes de tudo, vale lembrar que, se sua função altera o ambiente do shell de alguma maneira (por exemplo, cria uma variável que você vai usar em outros comandos, ou muda a pasta de trabalho do shell), ela não pode ser convertida, e deve ficar no .bashrc
.
- Crie um arquivo de texto com o cabeçalho:
#!/usr/bin/env bash
- Copie e cole os comandos da função para o arquivo de texto.
- Troque os
return
’s porexit
’s, se houver - Mova-o para a pasta e marque-os como executável.
Confissão
Rodei o sloccount
na minha pasta e deu 277 linhas de shell script (e olha que algumas funções eu acabei passando para awk
, python
, etc. porque se adequavam melhor ao que eu queria fazer).