システムでエイリアスが定義されている場所を確認するにはどうすればよいですか? Mac OS X(10.6.3)から起動されたターミナルセッション内で使用されるエイリアスの種類に言及しています。
たとえば、ターミナルコマンドプロンプトでパラメータなしでalias
コマンドを入力すると、設定したエイリアスのリストが表示されます。次に例を示します。
alias mysql='/usr/local/mysql/bin/mysql'
ただし、さまざまなスタートアップファイルでSpotlightとmdfind
を使用してシステム全体を検索しましたが、これまでのところ、このエイリアスが定義されている場所を見つけることができません。 (私はずっと前にそれをし、エイリアスを割り当てた場所を書き留めていませんでした)。
OSXの場合、この2ステップシーケンスは、私がずっと前に作成したエイリアスを見つけ、期待した場所(〜/ .zshrc)を見つけることができなかったので、うまくいきました。
cweekly:~ $ which la
la: aliased to ls -lAh
cweekly:~$ grep -r ' ls -lAh' ~
/Users/cweekly//.oh-my-zsh/lib/aliases.zsh:alias la='ls -lAh'
あぁ! ~/.oh-my-zsh/lib/aliases.zsh
の「非表示」。私は.oh-my-zshを少し調べましたが、lib/aliases.zshを見落としていました。
コマンドプロンプトでalias
と入力するだけで、使用しているエイリアスを確認できます。それ以外の場合、エイリアスが定義されている最も一般的な場所でfind
を実行できます。
grep -RHi "alias" /etc /root
将来的には、これらは標準のbash構成ファイルです
パーティーに少し遅れましたが、同じ問題(RHEL6で「l。」コマンドがエイリアスされた場所を見つけようとしました)があり、前の回答で言及されていない場所で終わりました。すべてのbash実装で見つかるとは限りませんが、/ etc/profile.d /ディレクトリーが存在する場合は、説明のないエイリアスについてgrepを実行してみてください。それは私が見つけた場所です:
[user@server ~]$ grep l\\. /etc/profile.d/*
/etc/profile.d/colorls.csh:alias l. 'ls -d .*'
/etc/profile.d/colorls.csh:alias l. 'ls -d .* --color=auto'
/etc/profile.d/colorls.sh: alias l.='ls -d .*' 2>/dev/null
/etc/profile.d/colorls.sh:alias l.='ls -d .* --color=auto' 2>/dev/null
ディレクトリはbashのマンページには記載されておらず、bashがプロファイル/起動情報を検索する場所の一部ではありませんが、RHELの場合、/ etc/profile内の呼び出しコードを確認できます。
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
より複雑な設定の場合(たとえば、bash-it、oh-my-zshなどのシェルスクリプトフレームワークを使用している場合)、スクリプトの重要な位置に「エイリアスmysql」を追加すると便利です。これは、エイリアスがいつ追加されるかを正確に把握するのに役立ちます。
例えば。:
echo "before sourcing .bash-it:"
alias mysql
. $HOME/.bash-it/bash-it.sh
echo "after sourcing bash:"
alias mysql
答えを見つけました(正しいファイルを見つめていましたが、明らかなものを見逃していました)。
私の場合のエイリアスは〜/ .bash_profileファイルで定義されています
どういうわけかこれは私を逃した。
多分これは ghostdog74 の意味に似ていると思うが、彼らのコマンドは私にとってはうまくいかなかった。
私はこのようなことを試してみます:
for i in `find . -type f`; do # find all files in/under current dir
echo "========"
echo $i # print file name
cat $i | grep "alias" # find if it has alias and if it does print the line containing it
done
本当に空想になりたい場合は、if [[ grep -c "alias" ]] then <print file name>