Por que não posso adicionar este PATH de Nó personalizado aos scripts /etc/profile.d?

1

Eu posso ter um problema na cadeia de inclusão dos perfis, ou algo pode estar errado no meu sistema ou no meu entendimento do perfil.d (RHEL7).

Eu adicionei um script /etc/profile.d .sh , que é para uma instalação de nó, ao tentar limpar o .bashrc. O problema é que ele não está anexando ao $PATH como eu esperava.

Note que o problema está acontecendo tanto através do meu terminal principal (ssh via putty), mas também diretamente do próprio console também.

$ cat ~/.bash_profile
#
# .bash_profile
#
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
$ cat /etc/profile.d/nvm_path.sh
# This adds node/nvm(node version manager) to path, and then initializes nvm, and its bash completion

#Load NVM
if [ -f ~/.nvm ]; then

    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

    if [ -f $NVM_DIR/bash_completion ]; then

        [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
    fi
fi

# Force npm onto the path (only needed if its not available on your node installation)
if [ -f ~/.npm/ ]; then
    PATH=$PATH:$HOME/.npm
fi

# Include node_mod bins in PATH, which are usually symlinked here (gulp,
# cordova, etc..)
if [ -f $HOME/.npm-packages/bin ]; then

    #note is a hyphen, not an underscore
    PATH=$PATH:$HOME/.npm-packages/bin
fi

export PATH

Para /etc/profile em si, é minha compreensão que os perms são ok como somente leitura, já que eles são originados, ao invés de executados, então eu acho que isso não é um problema. -rw-r--r--. 1 root root 1795 May 4 2016 profile

O que eu perdi?

Eu estou pensando que o problema está em algum lugar, pois os scripts são inicialmente carregados pelo root, os caminhos são inválidos. O problema: onde eu tento carregar os caminhos do usuário. O que pode ser feito sobre isso? Preciso adicionar uma variável $ LOGGED_USER no lugar de if [ -f ~/.nvm ] e talvez até $HOME? O que é essa variável?

Depois de mais pesquisas, parece que o problema é que o root está carregando o script, então $ HOME, mesmo $ USER, nunca está disponível, mesmo se eu definir uma condição lá para verificar se o root está carregando ou não, desde root está sempre pesquisando o script.

e.g. 
if [[ $EUID -ne 0 ]]; then
    USERDIR=$HOME
else
    USERDIR=/home/$USER
fi

if [ -f $USERDIR/.nvm ]; then
#...

Eu precisaria que a verificação do var acontecesse depois que o usuário fizesse login, não quando o usuário fosse root.

Parece que algo assim é destinado a /etc/skel/.bash_profile, a menos que alguém crie uma idéia inteligente de script. Alguma idéia de como fazer isso aqui, para que eu não precise usar o / etc / skel?

    
por Brian Thomas 12.05.2017 / 00:12

0 respostas