私が持っているとしましょうbash_functions.sh
:
function test(){
}
function test2(){
}
私の中~/.bashrc
:
source ~/bash_functions.sh
購入時に特定の機能購入を省略できますか?私の言葉はbash_functions.sh
、test
?
ベストアンサー1
関数定義でエイリアスのfoo () { … }
場合はfoo
拡張されます。時にはこれが問題になるかもしれませんが、ここでは役に立ちます。ファイルをインポートする前に別の名前のエイリアスを使用すると、foo
他の機能が定義されます。 Bashでは、非対話型シェルでエイリアス拡張がデフォルトでオフになっているのでshopt -s expand_aliases
。
sourced.sh
以下を含む場合
foo () {
echo "foo from sourced.sh"
}
それではこれを使ってください
foo () {
echo "old foo"
}
shopt -s expand_aliases # necessary in bash; just skip in ash/ksh/zsh
alias foo=do_not_define_foo
. sourced.sh
unalias foo; unset -f do_not_define_foo
foo
そしてあなたはそれを得ますold foo
。キーワードはエイリアス拡張を防ぐため、ソースファイルはfoo () { … }
関数定義構文を代わりに使用する必要があります。function foo { … }
function