web-dev-qa-db-ja.com

.bashrcファイルで定義されたエイリアス名が機能しないのはなぜですか?

以下のように.bashrcファイルにエイリアス名を付けました。しかし、エイリアス名は機能していません。どうして?

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

変更後、.bashrcファイルを入手しましたか?試してください:

. ~/.bashrc

すると、シェルに変更が表示されます。または、シェルを終了して再起動することもできます。

pS.

スクリプトから実行する場合は、最初にこれをロードしてください ref

shopt -s expand_aliases
29
Fran

これは、PATHが、パスを参照するすべてのエイリアス参照バイナリを使用するように正しく設定されていないために発生する可能性があります。つまり、lsは/ bin/lsの下に存在します。

「export PATH = $ PATH:$ Oracle_HOME/bin:/ usr/vac/bin:/ usr/vacpp/bin:」を使って試してみてください。または「export PATH = $ Oracle_HOME/bin:/ usr/vac/bin:/ usr/vacpp/bin:/ bin:/ sbin /:/ usr/sbin

そうでない場合は、「which」を使用して、個々のエイリアス参照バイナリのパスディレクトリ(履歴)を検索します。

2

MacOSユーザーがこの答えを探しに来た場合に備えて、MacBookでこれを試しましたが、ターミナルを再起動しても新しいエイリアス定義が読み込まれません。それを機能させる唯一の方法は、毎回source ~/.bashrcにアクセスすることでした。次に、エイリアス定義を~/.bash_profileに移動してみましたが、thisがうまくいきました。

1
Mig82

たぶん、あなたはあなたの.bashrcにすでにグローバルなエイリアスを定義しようとしています。

通常、.bashrcのエイリアスは、/etc/bashrcを呼び出す前に定義されます。それらを定義してみてください

.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:.
1
Mario Taddei

自問する質問は次のとおりです。

  • シェルですでに実行されている〜/ .bashrcです。シェルが起動したときにのみ実行されます。新しいシェルを開いた場合(bashを実行)は、そのはずです。 aliasを使用すると、すべてのエイリアスが出力されます。
  • 次に質問することは、エイリアスのプログラムが利用できるかどうかです。少なくともh(エイリアスの履歴)は組み込みなので、確実に機能します。
1
Fra Orolo