Bashからファイルをインポートしますが、特定の機能をスキップできますか?

Bashからファイルをインポートしますが、特定の機能をスキップできますか?

私が持っているとしましょうbash_functions.sh

function test(){
}

function test2(){
}

私の中~/.bashrc

source ~/bash_functions.sh

購入時に特定の機能購入を省略できますか?私の言葉はbash_functions.shtest

ベストアンサー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

おすすめ記事