不正なエイリアス宣言を見つけるにはどうすればよいですか?


37

特定の場所aliasが宣言されている場所を見つけようとしています。エイリアスを探すために知っている通常の場所をすべて検索しました。

  • 〜/ .bashrc
  • 〜/ .bash_profile
  • / etc / bashrc
  • / etc / profile

運がありません。

私がそれを知っているのaliaswhich COMMAND、私がそうするとき、私は得る:

alias COMMAND='/path/to/command'
    /path/to/command

どのファイルaliasalias名前を知っているだけを宣言しているのかを見つける方法はありますか?


3
関連質問の環境変数の代わりにエイリアスについて。基本的に、エイリアスはどこにでも設定できるため、簡単な方法はありません。set -x提案されたようにあなたの上部に置いてみて、それがあなたのためにそれを絞り込むかどうかを確認してください。
-jw013

1
あなたは置く必要があるだろうset -xの上部に/etc/bash_profile/etc/bashrc。理由だけで実行しませんbash -i -xbash -l -x
ミケル

回答:


30

私は/etc/profile.d/問題を探しますalias

また、次の方法で見つけることもできます。

grep -r '^alias COMMAND' /etc

これはgrep、で始まる行を探すファイルを再帰的に検索しますalias COMMAND

他のすべてが失敗した場合、これをあなたの最後に置きます ~/.bashrc

unalias COMMAND

26

あなたが試すことができるいくつかのことがあります:

  1. bash -vシェルの起動時に読み込まれている行を確認するために使用します
  2. bash -xシェルの起動中に実行されているコマンドを確認するために使用します
  3. 1つのスタートアップファイルのみで実行する

bash -v

この-v オプションはbash、読み取ったすべてのスクリプトファイルの各行を印刷します。

実行して開始

bash -i -v >bash-i.out 2>&1

5〜10秒待ってから、を押しCtrl+Cます。

これにより、bash-i.outすべてのスタートアップファイルがマージ(または連結)されたような単一のファイルが作成されます。

次に、を使用lessしてファイルを開き、を使用してエイリアスを検索します/aliasname

次に、そのエイリアスがファイル内の他の行に関連して表示される場所を比較します。たとえば、ほとんどのシステムでは、/etc/bash.bashrcと言う上部のコメントがある/etc/bash.bashrc~/.bashrc、あまりにも一つを有するが。

それはあなたの最上部より上なら~/.bashrc、それはおそらくにおけるスタートアップファイルの/etcそれ以外の場合は、あなたの中にあります、エイリアスを定義することの~/.bashrcか、それは経由を含むのファイルsourceまたは.(ドットコマンド)。

エイリアスが表示されない場合は、試してください

bash -l -v >bash-l.out 2>&1

これは、bashがログインシェルであることを示します。ログインシェルは、たとえば/etc/profileandの~/.bash_profile代わりに/etc/bash.bashrcandなどのいくつかの異なるスタートアップファイルを読み取ります~/.bashrc

bash -x

bash -v明確な答えが得られない場合は、実行してみてbash -xください。これは、シェルが読み取っている行ではなく、シェルが実行しているコマンドを出力します。

メソッドは、に変更-vする以外は基本的に上記と同じ-xです。(必要に応じて両方を併用できます。)

1つのスタートアップファイルのみで実行

bash -i --rcfile="$HOME/.bashrc"

エイリアスがあるかどうかを確認します。

システムにrcfile設定されている/etc/bash.bashrc場合は、set toで同じことを試してください。

それから試して

bash -l --rcfile="$HOME/.bash_profile"

そしてprofile、名前が変更$HOME/.bash_profileされているすべてのbashスタートアップファイルで同じ操作を行います(例:に変更)/etc/profile

どちらの方法でエイリアスを表示しても、見始めるべきファイルがわかります。


2

たぶんあなたの.xinitrc?また、自分.bashrcまたは自分の.bash_profile他のファイルがそれらに含まれているかどうかを確認する必要があります。たとえば、次のコマンドで参照される別のファイルにすべてのエイリアスを保持します。

[ -f ~/.bash_alias ] && source $HOME/.bash_alias

役に立つかもしれないいくつかの質問:これは通常のユーザーまたはrootユーザー向けですか?どのコマンドですか?Linuxのフレーバーは何ですか?


0

私はエイリアス定義を入れる非常に一般的な慣行に従います

~/.bash_aliases

そして、それを.bashrcから呼び出す

[ -f ~/.bash_aliases ] && source $HOME/.bash_aliases

2番目のコマンドで.bash_aliasの代わりに.bash_aliasesを意味すると推測できますか?
stagl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.