Como adicionar um caminho ao sistema $ PATH para o shell não-login de todos os usuários do debian

7

Depois de instalar alguns programas em /opt/xxx/bin , eu quero adicionar /opt/xxx/bin ao sistema $PATH para o shell não-login de todos os usuários. O que devo fazer?

    
por Yang Bo 09.09.2012 / 07:35

5 respostas

8

No Debian e em outros sistemas que usam o PAM (que é a maioria deles atualmente), você pode definir variáveis de ambiente (incluindo PATH ) em /etc/environment . Isso funcionará para qualquer método de login que use o módulo pam_env (seja no auth seção ou na seção session ); no Debian que deve ser todos eles (pelo menos os que fornecem maneiras de logar e executar comandos).

    
por 09.09.2012 / 22:45
1

O caminho padrão pode ser definido em /etc/profile , como Joe disse, mas também em $HOME/.profile . Eu também tenho muitos pacotes que eu compilei por conta própria (com o procedimento comum ./configure --prefix=/opt/<name> ) instalado em /opt . Para executar os binários em /opt/<name>/bin sem nenhum esforço adicional, adicionei

OPTDIR=/opt

for i in $OPTDIR/* ; do
    BINDIR=$i/bin
    if [ -d $BINDIR ] ; then
        if [ -z $PATH ] ; then
            PATH=$BINDIR
        else
            PATH=$BINDIR:$PATH
        fi
    fi
done

export PATH

para o meu $HOME/.profile , que no seu caso seria /etc/profile . Agora, mesmo se eu instalar pacotes em /opt no futuro, não preciso se preocupar em acessar os binários relacionados em /opt/.*/bin , pois o caminho é automaticamente adicionado a $PATH .

Como o software adicional não é necessário estável, prefiro $HOME/.profile over /etc/profile .

Uma pequena observação: /etc/.profile , respectivamente, $HOME/profile não é executado pelo seu shell padrão, mas por dash . Uma variante leve de bash que reduz a carga durante o processo de inicialização.

    
por 09.09.2012 / 13:35
1

Eu encontrei a resposta mais excelente em serverfault por Gilles :

Como definir o PATH para todos os usuários no Debian?

The first place where PATH is set is /etc/login.defs. There's a setting for root and a setting for everyone else.

Another place where you can define environment variables is /etc/environment. These settings will apply to everyone (you can't write arbitrary shell code there).

A third place where you can define environment variables is /etc/profile. There you can write arbitrary shell code. If you want a user-specific setting, there is the corresponding per-user file ~www-data/.profile. But this will only apply to console interactive logins; in particular it won't apply to cron jobs unless they explicitly source /etc/profile.

If you only need that PATH setting in a user crontab, you can write it at the beginning of the crontab. Note that you need the full list (PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin), you can't use a variable substitution (PATH=$PATH:/usr/local/zend/bin won't work there).

    
por 12.10.2015 / 12:27
0

O caminho padrão pode ser definido em / etc / profile

Mas eu estava apenas procurando no meu sistema Ubuntu, e ele está em / etc / environment

    
por 09.09.2012 / 07:51
-1
O comando

su redefine seu valor de ambiente PATH para um definido em /etc/login.defs pelas variáveis ENV_PATH e ENV_SUPATH. não esqueça de configurar este arquivo. veja aqui .

    
por 04.05.2017 / 18:01