Como obter as variáveis de env que eu quero com o comando superusuário?

1

Estou executando o OpenSuse 12.1 KDE. Eu estava executando o Ubuntu anteriormente. No Ubuntu havia uma opção de superusuário ( sudo -s ) que preservava o HOME env var do usuário original (e outra opção, sudo -i , que definia o HOME env var do usuário alvo).

Eu quero ter a mesma funcionalidade no OpenSuse. No entanto, por padrão, todas as variações de su ou sudo que tentei definem o HOME env var como o valor do usuário-alvo.

Alguém pode me dar as etapas precisas para implementar uma variação (ou seja, um alias ou algo assim) de su ou sudo que fará o seguinte:

  • preserva o HOME env var do usuário original
  • combine o PATH env var do usuário original com PATH env var do usuário de destino
  • caso contrário, trabalhe de forma semelhante a sudo -s no Ubuntu ou su no OpenSuse.

Eu prefiro alterar o mínimo possível sobre a configuração padrão, e espero criar um script que implementará essa pequena alteração para que, quando eu fizer o upgrade, eu possa restaurar minha configuração com o mínimo de interrupção / esforço.

    
por MountainX 17.01.2012 / 04:29

1 resposta

1

Você pode passar variáveis de ambiente para o ambiente sudo na linha de comando:

sudo env HOME=$HOME PATH=$PATH <command>

Como as substituições de variáveis acontecem primeiro, as versões atuais das variáveis são substituídas na linha de comando e, em seguida, executadas com o comando env no novo ambiente e, em seguida, <command> é executado.

No entanto, isso não corresponde à sua segunda crítica para combinar caminhos, mas você pode incluir isso em um script e passar exatamente o caminho desejado para o ambiente sudo . Caminhos de nível de sistema não mudam muito, especialmente dada a sua abordagem de deixar o máximo de baunilha possível. Então, no seu script, você poderia configurar uma nova variável de caminho e depois ir para o sudo:

#!/bin/bash
PATH2=$PATH:/usr/sbin:/sbin
sudo env PATH=$PATH2 HOME=$HOME $@

Chame isso de 'mysudo', talvez, e você pode até aliasar sudo to mysudo no seu perfil bash para que sua memória muscular para digitar sudo ainda funcione.

    
por 17.01.2012 / 12:41