2017-06-29 4 views
0

私はcdの代わりに使う関数を持っていて、cdという別名で呼び出す関数があります。私の質問は、cdを直接呼び出すのではなく、すべての関数とスクリプトが私のcd_funcをエイリアス経由で呼び出すようにすることです。それは簡単ですので、ここでbash:関数がエイリアスを呼び出すようにする

は、lsを使った例です: .myfile

ls_func2(){ 
    ls 
} 

.notmyfile

ls_func(){ 
    echo "function called" 
    dir 
} 
alias ls=ls_func 

それは.notmyfileが前に供給されることに注意することが重要ですです。私が欲しいのは、ls_func2lsの代わりにls_funcに直接呼び出すことです。 bashで

答えて

2

ソーシングは同じ機能を上書きするため、関連する機能がロードされる前に、関数を呼び出すまで、この場合のソース順序は(重要ではありません。

は、この作品がトップにこれを追加するようにするにはスクリプトの:

shopt -s expand_aliases 

このコマンドは非対話型のスクリプトで作業をエイリアシングするために使用される

+0

'cd_func'またはソースファイル全体のトップの上部に – ewok

+1

ベストが一番上にあります。?ファイルの作成前にエイリアスでも十分です。 –

+0

問題が発生しました。ソースファイルの一番上にコマンドがあります。新しい端末をロードすると、 'ls_func2'は' ls_func'を呼び出さない(つまり、エイリアスを通らない)。私は '.bash_profile'を手動でソースして動作させる必要があります。 – ewok

関連する問題