¿Por qué los nombres de alias definidos en el archivo .bashrc no funcionan?

12

He dado nombres de alias en el archivo .bashrc como a continuación. Pero los nombres de alias no funcionan. ¿por qué?

alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.
Venkatesh
fuente
2
¿Está diciendo que obtiene las variables de entorno pero no los alias, o no obtiene ninguna?
Paul
1
Puede ser un problema separado, pero eliminas tu RUTA. Debe hacer referencia a su RUTA anterior en cualquier entorno, por ejemploexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Respuestas:

29

¿Obtuviste tu .bashrcarchivo después de cambiarlo? Tratar:

. ~/.bashrc

Entonces su shell debería ver los cambios. Alternativamente, puede terminar y reiniciar su shell.

PD

Cuando corres desde un script, carga esta primera referencia

shopt -s expand_aliases
Fran
fuente
2
¡Esto resolvió mi problema! Antes de eso, incluso intenté cerrar sesión y volver a iniciar sesión a través del SSH, pero no pasó nada. El alias todavía no estaba disponible. ¡Parece que tengo que hacer esto cada vez que hago el SSH! ¿Sabes por qué está pasando esto?
Vladimir Despotovic
No recomiendo volver a ejecutar .bashrc. Puede causar algunos valores duplicados e inflamados. ¿Por qué no salir y comenzar un nuevo shell? Cargará el .bashrcarchivo actualizado .
AlikElzin-kilaka
2

Esto puede suceder porque su RUTA no se ha configurado correctamente para utilizar todos los alias a los que se hace referencia en la ruta absoluta de binarios. Es decir, existe bajo / bin / ls.

¿Puedes probar usando "export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin :." o algo así como "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

de lo contrario, utilice "which" para encontrar el directorio de ruta para binarios de referencia de alias individuales (qué historial).

Sivakumar Manickam
fuente
1

Las preguntas que debe hacerse son:

  • ¿El ~ / .bashrc ya está ejecutado en su shell? Solo se ejecuta cuando se inicia el shell. Si abre un nuevo shell (ejecutar bash) debería ser. Con aliasusted debería ver todos sus alias impresos.
  • Lo segundo que debe preguntar: ¿están disponibles los programas en sus alias? Al menos h (historial de alias) definitivamente debería funcionar, porque está integrado.
Fra Orolo
fuente
1

Tal vez estás tratando de definir tus alias en tu .bashrcque ya son globales.

Por lo general, sus alias .bashrcse definen antes de la /etc/bashrcllamada. Intenta definirlos después .

Aquí un ejemplo de tu .bashrc:

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.
Mario Taddei
fuente
¡Excelente respuesta! Lo veo constantemente en AWS Linux AMI's
rainabba
1

En caso de que algún usuario de MacOS busque esta respuesta, probé esto en mi MacBook e incluso reiniciar el Terminal no cargaría las nuevas definiciones de alias. La única forma en que podía hacerlo funcionar era source ~/.bashrcsiempre. Luego intenté mover mis definiciones de alias ~/.bash_profiley esto es lo que funcionó.

Mig82
fuente