Eu acredito que você deveria abstrair mais uma camada, para que você acabe com esse tipo de padrão.
GenericName
calls -> Architecture_or_Server_or_Domain_or_User_specific
calls -> AllArchServer Script
Exemplo usando backup
do_machine_backup
é um nome para as pessoas usarem (executar, adicionar tarefas do cron, etc.)
A tarefa é treinar qual ambiente / servidor (talvez usuário) está sendo executado em / on / by. Digamos que você tenha 3 ambientes dev / test / prod, poderia resolver isso e depois chamar o script Environment_Specific.
do_dev_machine_backup -type user | db | web
do_test_machine_backup ...
do_prod_machine_backup ...
or
do_centos_machine_backup -env dev|test|prod ...
...
Isso funciona sabendo o domínio / ambiente , que é o backup_host, qual é o backup, quais chaves usar, onde os arquivos de log devem ir, etc.
do_gen_machine_backup <src dir> <dst host> dst dir> <host_key> ... many args
Eu faria esses scripts (não aliases ou funções), misturando-os (tendo os dois) apenas servirá para tornar mais complicado depurar / desenvolver / manter, conforme se desenvolve. Você está salvando milissegundos apenas para comparar com a freqüência que você usa e com o tempo de execução dos scripts, isso provavelmente fará com que seja insignificante que sejam funções / aliases e não scripts.
Eu colocaria tudo em um lugar, onde você quiser, mas um nível superior, isso facilita a configuração do novo servidor, instala um diretório e, opcionalmente, adiciona um diretório a um caminho. ex. /usr/local/CompanyShortName
e daqui, você pode expandir dependendo de suas necessidades agora e no futuro ./bin
./sbin/
./config
./keys
...
É difícil ser específico, por isso minhas sugestões foram um pouco genéricas, espero que alguns dos princípios de criação de um ambiente sejam comuns e possam ser frutos para comentários adicionais.