Warum funktionieren in der .bashrc-Datei definierte Aliasnamen nicht?


12

Ich habe Aliasnamen in der .bashrc-Datei wie unten angegeben. Die Aliasnamen funktionieren jedoch nicht. Warum?

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
Wollen Sie damit sagen, dass Sie die Umgebungsvariablen erhalten, aber nicht die Aliase, oder Sie erhalten keine davon?
Paul

1
Möglicherweise handelt es sich um ein separates Problem, aber Sie löschen Ihren PFAD aus. Sie sollten Ihren alten Pfad in jeder Einstellung referenzieren, z. B.export PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Antworten:


29

Haben Sie Ihre .bashrcDatei bezogen, nachdem Sie sie geändert haben? Versuchen:

. ~/.bashrc

Dann sollte Ihre Shell die Änderungen sehen. Alternativ können Sie Ihre Shell beenden und neu starten.

ps

Wenn Sie ein Skript ausführen, laden Sie diese erste Referenz

shopt -s expand_aliases

2
Das hat mein Problem gelöst! Vorher habe ich sogar versucht, mich über die SSH ab- und wieder anzumelden, aber es ist nichts passiert. Der Alias ​​war noch nicht verfügbar. Sieht so aus, als müsste ich das jedes Mal tun, wenn ich SSH mache! Wissen Sie, warum das passiert?
Vladimir Despotovic

Ich empfehle nicht, erneut zu starten .bashrc. Dies kann zu doppelten und geschwollenen Werten führen. Warum nicht beenden und eine neue Shell starten? Die aktualisierte .bashrcDatei wird geladen .
AlikElzin-Kilaka

2

Dies kann passieren, weil Ihr PATH nicht richtig eingestellt wurde, um alle Alias-referenzierten Binärdateien zu verwenden. Dh es existiert unter / bin / ls.

Können Sie es mit "export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin:" versuchen? oder so etwas wie "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

Wenn nicht, verwenden Sie "which", um das Pfadverzeichnis für einzelne Alias-Ref-Binärdateien (welcher Verlauf) zu finden.


1

Fragen, die Sie sich stellen sollten, sind:

  • Ist das ~ / .bashrc bereits in Ihrer Shell ausgeführt? Es wird nur ausgeführt, wenn die Shell gestartet wird. Wenn Sie eine neue Shell öffnen (ausführen bash), sollte dies der Fall sein. Mit aliassollten Sie alle Ihre Aliase gedruckt sehen.
  • Zweitens sollten Sie fragen: Sind die Programme in Ihren Aliasen verfügbar? Zumindest h (alias history) sollte auf jeden Fall funktionieren, da es eingebaut ist.

1

Vielleicht versuchen Sie, Ihre Aliase in Ihren .bashrcbereits globalen zu definieren .

Normalerweise werden Ihre Aliase in .bashrcvor dem /etc/bashrcAnruf definiert . Versuchen Sie, sie nachher zu definieren .

Hier ein Beispiel für Ihre .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:.

Tolle Antwort! Ich sehe dies konsequent in AWS Linux
AMIs

1

Nur für den Fall, dass MacOS- Benutzer nach dieser Antwort suchen, habe ich dies auf meinem MacBook versucht, und selbst ein Neustart des Terminals würde die neuen Aliasdefinitionen nicht laden. Der einzige Weg, wie ich es zum Laufen bringen konnte, war source ~/.bashrcjedes Mal. Ich habe dann versucht, meine Alias-Definitionen zu verschieben, ~/.bash_profileund genau das hat der Trick getan.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.