Como salvar uma função no bash para uso posterior?

3

Eu tenho essa função para obter o endereço MAC do IP:

ip2arp()  {
   local ip="$1"
   ping -c1 -w1 "$ip" >/dev/null
   arp -n "$ip" | awk '$1==ip {print $3}' ip="$ip"
   }

Qual é o caminho certo para usá-lo mais tarde? Salvar em / usr / bin como sh e torná-lo executável, ou salvá-lo em um diretório inicial e criar um alias no bash? Existe um caminho certo e errado?

    
por Hrvoje T 14.11.2017 / 22:36

2 respostas

4

Se for apenas para seu uso pessoal, você poderá adicioná-lo ao arquivo de inicialização do seu shell como uma função, por exemplo, ~/.bashrc .

Para um resumo dos diferentes arquivos de inicialização no Bash, você pode consultar o Guia do Bash para iniciantes :

Veja também o Manual de referência do Bash :

Um padrão típico seria colocar sua definição de função em seu arquivo ~/.bashrc e fornecer esse arquivo a partir de seu ~/.bash_profile .

Mas vale a pena notar que o arquivo de perfil a ser usado depende do seu sistema operacional, do aplicativo do terminal e de suas próprias preferências. Veja por exemplo os seguintes posts no AskDifferent:

Veja também este post no StackOverflow:

Como alternativa, você pode criar um diretório pessoal para seus próprios scripts (por exemplo, eu uso ~/local/bin ) e, em seguida, adicionar esse diretório ao seu PATH em seu arquivo de perfil (por exemplo, export PATH="${HOME}/local/bin:${PATH} ).

Se você quiser disponibilizá-lo para outros usuários, poderá colocá-lo em /usr/local/bin como um script (em vez de /usr/bin ).

Para mais informações sobre onde colocar arquivos executáveis, consulte os seguintes posts:

por 14.11.2017 / 22:43
0

Se você tiver certeza de que está usando esta função somente a partir da linha de comando, é claro que você pode colocá-la em seus arquivos de inicialização.

Se você pretende usá-lo também de outros scripts de shell, é necessário seguir algumas etapas:

  • Você pode organizar seu ambiente de programação em torno de bibliotecas que consistem em uma ou mais definições de função, que você obtém a partir desses scripts de shell que precisam delas ou

  • Você abandonou a idéia de usar funções e criar scripts executáveis a partir dele.

Desde que suas funções não devam manipular as variáveis do shell, cabe a você escolher o caminho a seguir. Usar um script executável separado, em vez de uma função, tem, é claro, a vantagem de poder ser executado a partir de qualquer outro programa any , não apenas do bash.

    
por 15.11.2017 / 09:07

Tags