Esse problema me deixa louco. Ele está funcionando em todos os meus sistemas RHEL, mas no Ubuntu20LTS não consigo fazê-lo funcionar corretamente.
A configuração:
Os módulos de ambiente são carregados por meio de um script em "/etc/profile.d" para todos os usuários quando eles abrem um terminal/konsole. O módulo "aliases" define aliases para todos os nossos projetos e todos os usuários devem ver esses aliases em seu ambiente. Como aprendi, o terminal/konsole abrirá "interactive non-login-shells". Em nossa configuração, o ".bashrc" é originado quando o terminal/konsole é aberto.
O que é esperado e funciona no RHEL, mas não funciona no Ubuntu20LTS:
Abra o terminal ou konsole --> os módulos são carregados (via script em “etc/profile.d/…”) --> “alias” mostra todos os aliases definidos do módulo “aliases” (veja o conteúdo ".bashrc" no final deste post):
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=/icd/cfg/modules:
Currently Loaded Modulefiles:
1) aliases 2) common 3) aliases_ue
[userXY@host:~]
# alias
alias ATIC183='cd $ICD_PROJ/ATIC183; source $ICD_CFG/env/proj_setup/start_proj.sh'
alias FFT='cd $ICD_PROJ/monarch; source $ICD_CFG/env/proj_setup/start_proj.sh'
alias HXLR0='cd $ICD_PROJ/HXLR0; source $ICD_CFG/env/proj_setup/start_proj.sh'
O que é experimentado no Ubuntu20LTS:
Abra o terminal --> os módulos são carregados --> “alias” NÃO mostra os aliases definidos, apenas uma definição de ".bashrc":
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=/icd/cfg/modules:
Currently Loaded Modulefiles:
1) aliases 2) common 3) aliases_ue
[userXY@host:~]
# alias
alias ll='ls -al'
O que foi testado adicionalmente e NÃO funciona:
Abra o terminal --> recarregue o módulo via “module load aliases” --> “alias” NÃO mostra os aliases definidos
Abra o terminal --> “su userXY” --> os módulos são carregados --> “alias” NÃO mostra os aliases definidos
# su userXY
Password:
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=/icd/cfg/modules:
Currently Loaded Modulefiles:
1) aliases 2) common 3) aliases_ue
[userXY@host:~]
# alias
alias ll='ls -al'
Abra o terminal --> “bash -l” --> os módulos são carregados --> “alias” NÃO mostra os aliases definidos, mas outros aliases são carregados adicionalmente
Abra o terminal --> “su userXY” --> os módulos são carregados --> “bash -l” --> alias” NÃO mostra os aliases definidos, mas outros aliases são carregados adicionalmente
# bash -l
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=/icd/cfg/modules:
Currently Loaded Modulefiles:
1) aliases 2) common 3) aliases_ue
[userXY@host:~]
# alias
alias ll='ls -al'
alias pat='puppet agent -t'
alias su2='sudo su -'
Abra o terminal --> “sudo su userXY” --> NENHUM módulo foi carregado
# sudo su userXY
ERROR: No module path defined
ERROR: No module path defined
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=
No Modulefiles Currently Loaded.
O que está funcionando para obter os aliases:
Abra o terminal --> “sudo su userXY” --> NENHUM módulo foi carregado --> “bash -l” --> alias mostra todos os aliases definidos
Abra o terminal --> ssh localhost --> os módulos são carregados --> alias mostra todos os aliases definidos
# sudo su userXY
ERROR: No module path defined
ERROR: No module path defined
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=
No Modulefiles Currently Loaded.
[userXY@host:~]
# bash -l
I am .bashrc and was loaded!
[INFO:] $MODULEPATH=/icd/cfg/modules:
Currently Loaded Modulefiles:
1) aliases 2) common 3) aliases_ue
[userXY@host:~]
# alias
alias ATIC183='cd $ICD_PROJ/ATIC183; source $ICD_CFG/env/proj_setup/start_proj.sh'
alias FFT='cd $ICD_PROJ/monarch; source $ICD_CFG/env/proj_setup/start_proj.sh'
alias HXLR0='cd $ICD_PROJ/HXLR0; source $ICD_CFG/env/proj_setup/start_proj.sh'
Parece que tem a ver com os shells de login e não login. Mas não consigo descobrir por que os aliases (que são definidos pelos módulos carregados) são sobrescritos/excluídos em um cenário, mas estão disponíveis no outro cenário.
Esses são arquivos de configuração no meu $HOME:
.bash_aliases --> inexistente
.profile --> inexistente
.login --> inexistente
.cshrc --> inexistente
.bashrc
#cat .bashrc
case "$0" in
-sh|sh|*/sh) modules_shell=sh ;;
-ksh|ksh|*/ksh) modules_shell=ksh ;;
-zsh|zsh|*/zsh) modules_shell=zsh ;;
-bash|bash|*/bash) modules_shell=bash ;;
esac
module() { eval `/usr/bin/tclsh8.6 /usr/lib/x86_64-linux-gnu/modulecmd.tcl $modules_shell $*`; }
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
export SVN_EDITOR=vi
#colorized shell prompt
export PS1='[\[\033[1;31m\]\u@\[\033[1;34m\]\h:\[\033[0;32m\]\w\[\033[0m\]]\n# '
# load aliases
module load aliases_ue
#disable beep
xset b off
alias ll="ls -al"
echo "I am .bashrc and was loaded!"
echo -e "[INFO:] \$MODULEPATH=$MODULEPATH\n"
module list
.bash_perfil
# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
.kshrc
# cat .kshrc
# .kshrc
# Source global definitions
if [ -f /etc/kshrc ]; then
. /etc/kshrc
fi
# use emacs editing mode by default
set -o emacs
# User specific aliases and functions
Qualquer dica é muito apreciada!