2011-06-16 14 views
20

benim bash komut aşağıdaki fonksiyon var olduğunda programı çağırma: recursesbir bash fonksiyonu aynı adı

yapmak bu komut dosyası içinde denir
make() { 
    cd Python-3.2 
    make 
} 

, bu fonksiyon çağrılır. İşlev içinde make numaralı çağrı aslında harici marka yardımcı programını çağırmalıdır. Benim make işlevimi yeniden adlandırmaktan başka, bunu başarmanın en temiz yolu nedir?

cevap

41

Kabuk işlevi aramalarını bastırmak için command yerleşik özelliğini kullanabilirsiniz.

command: command [-pVv] command [arg ...] 
    Execute a simple command or display information about commands. 

    Runs COMMAND with ARGS suppressing shell function lookup, or display 
    information about the specified COMMANDs. Can be used to invoke commands 
    on disk when a function with the same name exists. 

    Options: 
     -p use a default value for PATH that is guaranteed to find all of 
     the standard utilities 
     -v print a description of COMMAND similar to the `type' builtin 
     -V print a more verbose description of each COMMAND 

    Exit Status: 
    Returns exit status of COMMAND, or failure if COMMAND is not found. 
+2

'which' yardımcı programını kullanarak üzerinden bu yaklaşımın bir yararı ekstra işlem başlattı önlemek olacaktır. –

+0

Tam olarak doğru cevap budur. –

+0

+1: Bunu tamamen unuttum. –

9

Programın tam yolunu kullanın. Örneğin. /usr/bin/make. tam yolunu bulup make çalıştırır

$(which make) 

: Tam yolu bilmiyorsanız

, şöyle which yardımcı programını kullanabilirsiniz.