Se você deseja enviar a PS1
variável e ela não contém uma '
(aspas simples), tente:
ssh targethost -t "PS1='$PS1'; exec bash"
O local .bashrc
pode sobrescrever PS1
(obrigado a Dennis Williamson por apontar isso).
Existem maneiras de transmitir variáveis de ambiente pelo ssh , mas elas geralmente são desativadas na configuração do servidor. Se a PermitUserEnvironment
diretiva estiver ativada na configuração do servidor e cada usuário tiver seu próprio par de chaves (sim, você pode não ter tanta sorte), poderá adicionar environment="PS1=…"
à linha ~/.ssh/authorized_keys
correspondente à sua chave.
Se você deseja manter sua própria configuração em uma conta de usuário compartilhada, é possível criar seu próprio diretório do arquivo de configuração e definir a HOME
variável de ambiente para apontar para esse diretório.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Crie links simbólicos no mrstatic.home
diretório apontando para a entrada correspondente no diretório pai quando desejar compartilhar um arquivo com os outros usuários.
Em seguida, faça login com
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Se você deseja modificar o controle remoto .profile
(ou outro arquivo de inicialização), provavelmente pode automatizar suas configurações. Muitos sites permitem LC_*
a passagem de variáveis de ambiente (normalmente são usadas para configurações de localidade). Se essas duas condições forem atendidas, você poderá definir uma variável que não seja realmente usada para localidades, digamos LC_USER
, no lado do cliente e testá-la no servidor .profile
.
(É claro que contas compartilhadas são uma péssima idéia, mas sei que você pode não estar em condições de mudar essa situação.)
"PS1='$PS1' bash -i"
(e por que nãoexec
também)?PS1
ser substituído durante a inicialização do shell. Sem exec: durante os testes no meu sistema, isso não fez nenhuma diferença - nenhum processo extra..bashrc
é provável que o local substituaPS1
.Coloque seu prompt do PS1 em ~ / .ssh / environment e a sessão ssh o levará a todos os hosts que você fizer login. Funciona para mim com o openssh 4.3p2.
fonte
PermitUserEnvironment
, que está desativada por padrão.você pode especificar variáveis de ambiente no lado do cliente e, se o servidor ssh permitir (verifique man sshd-config), essas variáveis serão copiadas para a sessão quando você fizer login na máquina.
portanto, você teria que configurar o .bashrc no servidor para verificar um PS1 existente (ou qualquer outra variável) e definir o PS1 apenas se ainda não estiver definido.
ou, que simplificam as coisas, você agrupa suas configurações em uma função .. e implanta essa função como um arquivo especial da sua fonte sob demanda (
source joes_bashrc
) ou diretamente no .bashrc. ter seu próprio arquivo parece um pouco mais robusto. as outras pessoas podem usar suas configurações, mas não são obrigadas a fazê-lo.fonte
Não compartilhe logins. SSH como você, então faça
sudo -su shareduser
(-s
significa "shell").Faça
sudo
manter seu diretório inicial:fonte
Se você quiser fazer isso sem precisar de um scp extra, pode fazer algo assim:
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
Isso gerará um .bashrc.n baseado no bashrc dos servidores, mas com suas substituições.
fonte
Se você está disposto a interferir de forma imperceptível em seus colegas, e você pode confiar neles para não interferir com a sua preferência, então eu sugiro uma combinação de resposta de Ciro , resposta de Akira e resposta de Dennis Williamson .
~/.bashrc
e adicione no fim. Embora seus colegas “não gostem [de escrever] sobre o perfil base”, eles não estarão cientes disso, a menos que procurem por ele.Acredito que isso seja bastante claro, mas: o
ssh
comando faz com que aUnf
variável seja definida no servidor remoto quando você efetuar o logon. Isso invocará seu código no controle remoto.bashrc
, o que colocará suas customizações em vigor. Como você coloca seu código no final de.bashrc
, ele substituirá as configurações gerais anteriormente no arquivo.Divulgação: Eu não testei isso.
fonte
A maneira mais fácil é IMHO:
fonte
PROMPT_COMMAND
(que é executada toda vez que o shell emite um prompt) parece ser uma maneira muito pesada de resolver esse problema. E, como é um tanto misteriosa, qualquer resposta que sugira que realmente deva ter uma explicação de como funciona.Você pode fazer coisas como montar sua casa em sshfs / nfs, mas a solução mais fácil é passar o bashrc para a nova máquina. Isso também traz aliases e outras coisas.
fonte