perché i nomi alias definiti nel file .bashrc non funzionano?


12

Ho dato nomi alias nel file .bashrc come di seguito. Ma i nomi degli alias non funzionano. perché?

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
Stai dicendo che ottieni le variabili di ambiente ma non gli alias o non ne ottieni nessuna?
— Paul,

1
Potrebbe essere un problema separato, ma cancelli il PERCORSO. Dovresti fare riferimento al tuo vecchio PERCORSO in qualsiasi contesto, ad esexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
— Rich Homolka,

Risposte:


29

Hai origine il tuo .bashrcfile dopo averlo modificato? Provare:

. ~/.bashrc

Quindi la tua shell dovrebbe vedere i cambiamenti. In alternativa, è possibile terminare e riavviare la shell.

ps

Quando si esegue da uno script, caricare questa prima ref

shopt -s expand_aliases

2
Questo ha risolto il mio problema! Prima ancora, ho anche provato a disconnettermi e riconnettermi tramite SSH, ma non è successo nulla. L'alias non era ancora disponibile. Sembra che devo farlo ogni volta che faccio SSH! Sai perché sta succedendo questo?
— Vladimir Despotovic,

Non consiglio di ripetere la corsa .bashrc. Può causare alcuni valori duplicati e gonfiati. Perché non uscire e avviare una nuova shell? Caricherà il .bashrcfile aggiornato .
— AlikElzin-Kilaka,

2

Ciò può accadere perché il PERCORSO non è stato impostato correttamente per utilizzare tutti i binari alias percorso absoulte. Cioè esiste sotto / bin / ls.

Puoi provare usando "export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin :." o qualcosa del genere "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

in caso contrario, utilizzare "quale" per trovare la directory del percorso per i singoli binari di riferimento alias (quale cronologia).


1

Le domande da porsi sono:

  • Il ~ / .bashrc è già eseguito nella tua shell? Funziona solo all'avvio della shell. Se apri una nuova shell (esegui bash) dovrebbe essere. Con aliaste dovresti vedere tutti i tuoi alias stampati.
  • Seconda cosa da chiedere: sono disponibili i programmi nei tuoi alias. Almeno h (alias history) dovrebbe sicuramente funzionare, perché è incorporato.

1

Forse stai cercando di definire i tuoi alias nei tuoi .bashrcche sono già globali.

Di solito i tuoi alias .bashrcsono definiti prima della /etc/bashrcchiamata. Prova a definirli dopo .

Ecco un esempio del tuo .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:.

Risposta formidabile! Lo vedo costantemente in
— AMS di

1

Nel caso in cui qualsiasi utente MacOS cerchi questa risposta, l'ho provato sul mio MacBook e anche il riavvio del Terminale non avrebbe caricato le nuove definizioni alias. L'unico modo in cui riuscivo a farlo funzionare era source ~/.bashrcogni volta. Ho quindi provato a spostare le mie definizioni alias in ~/.bash_profilee questo è ciò che ha fatto il trucco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.