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


12

以下のように.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:.

2
環境変数は取得するがエイリアスは取得しない、またはどれも取得しないと言っていますか?
ポール

1
別の問題かもしれませんが、PATHを消去します。あなたは、例えば、任意の設定で古いPATHを参照する必要がありますexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
リッチHomolka

回答:


29

.bashrcファイルを変更した後、ソースを取得しましたか?試してください:

. ~/.bashrc

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

PS

スクリプトから実行する場合、この最初の参照をロードします

shopt -s expand_aliases

2
これで問題が解決しました!その前に、SSHを介してログアウトして再度ログインしようとしましたが、何も起こりませんでした。エイリアスはまだ利用できませんでした。SSHを実行するたびにこれを実行する必要があるようです。なぜこれが起こっているのか知っていますか?
ウラジミールDespotovic

再実行することはお勧めしません.bashrc。値の重複や膨張を引き起こす可能性があります。終了して新しいシェルを開始してみませんか?更新された.bashrcファイルをロードします。
AlikElzin-kilaka

2

これは、PATHがすべてのエイリアス参照バイナリabsoulteパスを使用するように正しく設定されていないために発生する可能性があります。つまり、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」を使用して、個々のエイリアスrefバイナリ(どの履歴)のパスディレクトリを検索します。


1

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

  • 〜/ .bashrcは既にシェルで実行されていますか?シェルが開始されたときにのみ実行されます。新しいシェルを開く(実行するbash)はずです。ではalias、あなたは、すべてのエイリアスが印刷されるはずです。
  • 2つ目の質問:エイリアス内のプログラムが利用可能かどうか。少なくともh(エイリアス履歴)は組み込みであるため、確実に機能するはずです。

1

たぶん、あなた.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:.

素晴らしい答えです!これはAWS Linux AMIで一貫して見られます
rainabba

1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.