Esta resposta não lida com a sintaxe destacando especificamente , mas sim com o problema de manter configurações consistentes em várias máquinas.
Você não pode alterar facilmente o comportamento dos utilitários em um sistema remoto por meio de alterações de configuração em seu sistema local, especialmente se você estiver tentando configurar uma variedade de aplicativos diferentes.
Se o seu diretório pessoal estiver montado em um compartilhamento de rede, como o NFS, então modificações locais para, por exemplo, ~/.bashrc
ou outros arquivos em sua máquina local obviamente serão transferidos para os sistemas remotos se eles montarem o mesmo compartilhamento.
A próxima etapa (se o compartilhamento do diretório home nos diferentes sistemas não for factível) seria configurar suas configurações locais da maneira que você quer que elas sejam, e depois copiá-las para os sistemas remotos usando scp
ou rsync
ou algo semelhante. Pode ser uma boa ideia escrever um script simples para fazer isso, se você pretende ajustar as configurações locais.
Esse script pode ser tão simples quanto (não testado)
#!/bin/bash
configs=( "$HOME/.bash_profile" "$HOME/.bashrc" )
remotes=( "host1" "host2" )
for remote in "${remotes[@]}"; do
scp "${configs[@]}" "$remote:"
done
O próximo passo disso seria manter os arquivos de configuração relevantes em um sistema de controle de revisão de arquivos com reconhecimento de rede de alguma descrição, como o Git. Isso também permitiria criar ramificações para máquinas ou tipos específicos de Unix, além de facilitar o acesso às configurações pela rede.
Observe também que utilitários diferentes, embora usando o mesmo nome, podem ser diferentes em sua implementação ou versão em sistemas diferentes e, portanto, exigem configuração diferente. Isto significa que uma configuração para, e. Bash aqui pode quebrar sua concha lá. Uma fonte óbvia de tal quebra são as diferenças entre o Bash versão 3 e o Bash versão 4, ou o fato de que alguns sistemas (não-Linux) não usam o GNU coreutils (que fornece ls
e outras ferramentas de shell similares).
Eu trabalho em torno de diferenças no layout do sistema de arquivos (outro problema ao tentar configurar um shell cujos scripts de inicialização são compartilhados entre contas em Unices diferentes, o que requer que eu defina PATH
de forma diferente em diferentes hosts) no meu ~/.profile
(estou usando ksh93
em vez de bash
) assim:
PATH="$( getconf PATH )"
case "$(uname -s)" in
OpenBSD) PATH="$PATH:/usr/local/sbin:/usr/games" ;;
NetBSD) PATH="$PATH:/usr/X11R7/bin" ;;
esac