pourquoi les noms d'alias définis dans le fichier .bashrc ne fonctionnent pas?


12

J'ai donné des noms d'alias dans le fichier .bashrc comme ci-dessous. Mais les noms d'alias ne fonctionnent pas. Pourquoi?

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:.

2
Voulez-vous dire que vous obtenez les variables d'environnement, mais pas les alias, ou que vous n'en obtenez aucune?
Paul

1
Peut être un problème distinct, mais vous effacez votre CHEMIN. Vous devez référencer votre ancien CHEMIN dans n'importe quel cadre, par exempleexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Réponses:


29

Avez-vous source votre .bashrcfichier après l'avoir modifié? Essayer:

. ~/.bashrc

Ensuite, votre shell devrait voir les changements. Alternativement, vous pouvez terminer et redémarrer votre shell.

ps

Lorsque vous exécutez à partir d'un script, chargez cette première référence

shopt -s expand_aliases

2
Cela a résolu mon problème! Avant cela, j'ai même essayé de me déconnecter et de me reconnecter via SSH, mais rien ne s'est produit. L'alias n'était toujours pas disponible. On dirait que je dois le faire à chaque fois que je fais le SSH! Savez-vous pourquoi cela se produit?
Vladimir Despotovic

Je ne recommande pas de relancer .bashrc. Cela peut provoquer des valeurs en double et gonflées. Pourquoi ne pas quitter et démarrer un nouveau shell? Il chargera le .bashrcfichier mis à jour .
AlikElzin-kilaka le

2

Cela peut se produire parce que votre CHEMIN D'ACCÈS n'a pas été correctement configuré pour utiliser tous les chemins d'absoulte binaires référencés par alias. C'est-à-dire que ls existe sous / bin / ls.

Pouvez-vous essayer d'utiliser "export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin :." ou quelque chose comme "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

sinon, utilisez "which" pour trouver le répertoire de chemin pour les binaires de référence d'alias individuels (quel historique).


1

Les questions à vous poser sont:

  • Le ~ / .bashrc est-il déjà exécuté dans votre shell. Il ne s'exécute qu'au démarrage du shell. Si vous ouvrez un nouveau shell (exécutez bash), cela devrait l'être. Avec aliasvous devriez voir tous vos alias imprimés.
  • Deuxième chose à demander: les programmes de vos alias sont-ils disponibles? Au moins h (historique d'alias) devrait certainement fonctionner, car il est intégré.

1

Peut-être que vous essayez de définir vos alias dans votre .bashrcqui sont déjà globaux.

Habituellement, vos alias .bashrcsont définis avant l' /etc/bashrcappel. Essayez de les définir après .

Voici un exemple de votre .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:.

Super réponse! Je vois cela de manière cohérente dans AWS Linux AMI
rainabba

1

Juste au cas où des utilisateurs de MacOS viendraient à la recherche de cette réponse, j'ai essayé cela sur mon MacBook et même redémarrer le terminal ne chargerait pas les nouvelles définitions d'alias. La seule façon de le faire fonctionner était à source ~/.bashrcchaque fois. Je puis essayé de déplacer mes définitions d'alias ~/.bash_profileet c'est ce qui a fait l'affaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.