特定のalias
が宣言されている場所を見つけようとしています。エイリアスを探すために、私が知っている通常の場所をすべて検索しました。
運が悪い。
alias
だと知っています。which COMMAND
を実行すると、次のようになります。
alias COMMAND='/path/to/command'
/path/to/command
alias
の名前だけがわかっているalias
を宣言しているファイルを見つける方法はありますか?
問題のあるalias
を/etc/profile.d/
で調べます。
次の方法で検索することもできます。
grep -r '^alias COMMAND' /etc
これは、alias COMMAND
で始まる行を探すファイルを再帰的にgrep
します。
他のすべてが失敗した場合、これを~/.bashrc
の最後に置きます
unalias COMMAND
試すことができることがいくつかあります。
bash -v
を使用して、シェルの起動時に読み取られている行を確認しますbash -x
を使用します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/profile
と~/.bash_profile
ではなく/etc/bash.bashrc
と~/.bashrc
などのいくつかの異なるスタートアップファイルを読み取ります。
bash -x
bash -v
で明確な答えが得られない場合は、シェルが読み取っている行ではなく、シェルが実行しているコマンドを出力するbash -x
を実行してみてください。
メソッドは基本的に上記と同じですが、-v
を-x
に変更します。 (必要に応じて両方を併用できます。)
1つのスタートアップファイルのみで実行
bash -i --rcfile="$HOME/.bashrc"
エイリアスがあるかどうかを確認します。
システムでrcfile
を/etc/bash.bashrc
に設定して同じことを試してください。
次に試してください
bash -l --rcfile="$HOME/.bash_profile"
名前にprofile
が含まれているすべてのbashスタートアップファイルについても同じようにします。 $HOME/.bash_profile
を/etc/profile
に変更します。
どちらの方法でエイリアスを表示しても、見始める必要のあるファイルがわかります。
多分あなたの.xinitrc
?また、.bashrc
または.bash_profile
それらの他のファイルをソースします。たとえば、次のコマンドで参照される別のファイルにすべてのエイリアスを保持します。
[ -f ~/.bash_alias ] && source $HOME/.bash_alias
役立つかもしれないいくつかの質問:これは通常のユーザーですか、それともrootユーザーですか?それはどのコマンドですか? Linuxの味は?
私はエイリアス定義を次の場所に置くという非常に一般的な慣習に従っています
~/.bash_aliases
そしてそれを.bashrcから次のように呼び出します
[ -f ~/.bash_aliases ] && source $HOME/.bash_aliases