7

コマンドがエイリアスであっても、コマンドの「起源」を取得する(ある程度)信頼できる方法はありますか? たとえば、これを .bash_profile に入れると

alias lsa="ls -A"

lsaが定義されているコマンドラインから知りたかったのですが、それは可能ですか? コマンドについては知ってwhichいますが、それではうまくいかないようです。

4

3 に答える 3

15

カールがコメントで指摘したtypeように、名前がどのように定義されているかを知る正しい方法です。

mini:~ michael$ alias foo='echo bar'
mini:~ michael$ biz() { echo bar; }
mini:~ michael$ type foo
foo is aliased to `echo bar'
mini:~ michael$ type biz
biz is a function
biz () 
{ 
    echo bar
}
mini:~ michael$ type [[
[[ is a shell keyword
mini:~ michael$ type printf
printf is a shell builtin
mini:~ michael$ type $(type -P printf)
/usr/bin/printf is /usr/bin/printf
于 2012-07-26T01:12:01.950 に答える
1

typewhichはソースを教えてくれますが、いくつかのステップで検索しません。このための小さなプログラムを書きました: origin . 例:

alext@smith:~/projects/origin$ ./origin ll
'll' is an alias for 'ls' in shell '/bin/bash': 'ls -alF'
'ls' is an alias for 'ls' in shell '/bin/bash': 'ls --color=auto'
'ls' found in PATH as '/bin/ls'
'/bin/ls' is an executable
alext@smith:~/projects/origin$
于 2016-02-29T20:04:55.723 に答える