Que configurações alterar em minha máquina local para realce de sintaxe em todas as máquinas remotas?

0

Há um grande número de respostas não muito úteis sobre essa questão em todo o lugar. Eu tentei vários. Alguns exigiriam que eu alterasse as configurações em cada máquina remota que eu acessasse. Alguns prometeram funcionar apenas com algumas alterações na minha máquina local, mas falharam.

Esta questão coleta várias das soluções que tentei.

Então, primeiro: É possível alterar as configurações na minha máquina local, de tal modo que o realce de sintaxe esteja habilitado para todas as máquinas remotas por ssh?

Se sim, como?

Note que estou usando o Bash for Ubuntu no Windows 10 e me conecto principalmente a máquinas que executam o Ubuntu ou o Debian.

Os comandos / programas para os quais eu particularmente gostaria de ter destaque são:

ls stuff
history | grep stuff
vim stuff
    
por LShaver 21.04.2017 / 12:34

2 respostas

1

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
    
por 21.04.2017 / 13:12
0

Obter cor sobre o ssh nem sempre é fácil de realizar.

Você precisará garantir que todos os arquivos de configuração necessários sejam copiados para os outros hosts. O Vim requer determinadas configurações para cores, que são definidas em .vimrc e .bashrc . Esta postagem no blog descreve como você pode copiar automaticamente seus dotfiles para qualquer máquina você se conecta.

Ele usa LocalCommand , a capacidade do cliente OpenSSH de executar comandos na máquina local.

Para completar, o comando é reimpresso aqui com correções para o bash: PermitLocalCommand yes LocalCommand tar c -C${HOME} .bashrc .vim .vimrc \ | ssh -o PermitLocalCommand=no %n "tar mx -C${HOME} .

Dependendo de como você colorir a saída de ls ou grep , você pode precisar de arquivos de configuração adicionais.

O tar ssh tar acima é um padrão de comando, que pode ser visto com bastante frequência e permite copiar vários arquivos para uma máquina remota.

Se isso não estiver resolvendo seu problema, você precisará fornecer mais informações. Você está usando mintty? Você definiu TERM ? Como é o seu .vimrc e .bashrc ? Qual colorscheme você quer usar no vim? Você está usando alguma fantasia para colorir? ...

    
por 22.04.2017 / 04:33