Onde posso colocar uma função shell definida pelo usuário?

9

Estou planejando criar uma função que simplifique as coisas para mim. A função seria algo como

function lazymode()
{
echo "Hello World!";
}

para que, quando eu usar o comando lazymode no shell , ele exiba o Hello World! .

Qual arquivo devo colocar a função definida pelo usuário?

    
por Abel Melquiades Callejo 12.09.2013 / 10:09

2 respostas

9

Depende da função. Se for apenas uma linha simples super simples, você pode criar um alias ou colocar a função em ~/.bashrc (um arquivo que o bash carrega quando é iniciado).

Se você estiver criando algo um pouco mais substancial, pode fazer mais sentido criar seu próprio script executável em ~/bin/ , que não existe por padrão (é apenas um diretório), mas deve estar em seu caminho. Lembre-se de que o arquivo precisará ser executável ( chmod +x filename ) e iniciar com uma estrofe #!/bin/bash adequada.

A segunda rota tem alguns benefícios claros:

  • É mais fácil ver o que está disponível
  • Um erro de sintaxe não regista o seu perfil
  • Você não precisa continuar a terceirizar sua configuração bash se alterar o script
  • Ele está disponível para qualquer shell, desde que o caminho completo seja usado ou ~/bin/ esteja no caminho para esse shell também (o que deve ser na maioria dos casos, AFAIK).
por Oli 12.09.2013 / 10:13
3

A melhor escolha seria ~/.bashrc file.

Você pode escrever suas definições de função do shell diretamente no arquivo ~/.bashrc ou, se tiver muitas delas e não quiser confundir o arquivo ~/.bashrc , poderá colocá-las todas em outro arquivo do seu arquivo. escolhendo - apenas certifique-se de colocar esse arquivo no seu arquivo ~/.bashrc . Por exemplo, se o arquivo com suas funções for denominado bash_functions , basta incluir no arquivo ~/.bashrc as linhas:

if [[ -f /path/to/bash_functions ]]; then
    source /path/to/bash_functions
fi

ou, de forma equivalente:

if [[ -f /path/to/bash_functions ]]; then
    . /path/to/bash_functions
fi

em que . é apenas uma representação simbólica de source . O teste if garante que o arquivo /path/to/bash_functions exista antes de tentar obtê-lo.

Essa técnica é muito semelhante ao estabelecimento de aliases em ~/.bashrc , criando um arquivo chamado ~/.bash_aliases e usando uma sintaxe semelhante à acima, em ~/.bashrc , para testar sua existência e, em seguida, fornecê-lo.

    
por Radu Rădeanu 12.09.2013 / 10:10