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?