bashがソースファイルの構文チェックを防ぐ方法は?

bashがソースファイルの構文チェックを防ぐ方法は?

zshとbashによって提供されるファイルには、次のコードがあります。

if test $SHELLNAME = zsh ; then
    lss() { l -l ${1:-.}/*(s,S,t); }
    laf() { l ${1:-.}/.*(.); }
    lad() { l -d ${1:-.}/.*(/); }
    lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }
fi

SHELLNAMEzshシェルがzshかシェルがbashbashかどうか。

上記の各関数には、zshでは機能しますがbashでは機能しないコードが含まれています。

このファイルを受信すると、次のエラーが発生します。

bash: <filename>: line 67: syntax error near unexpected token `('
bash: <filename>: line 67: `     lss() { l -l ${1:-.}/*(s,S,t); }'

現在私はevalbashの構文チェックをバイパスするためにこれを使用しています。

if test $SHELLNAME = zsh ; then
    # Using eval makes sure bash can't try to syntax-check these functions.
    eval 'lss() { l -l ${1:-.}/*(s,S,t); }'
    eval 'laf() { l ${1:-.}/.*(.); }'
    eval 'lad() { l -d ${1:-.}/.*(/); }'
    eval 'lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }'
fi

この問題に対するより良い解決策はありますか? (たぶん使用されないかもしれませんeval

ベストアンサー1

Bashが構文チェックを行わないようにする代わりに、正しいシェルが呼び出されたときにのみそれを選択するスクリプトを使用するのはどうですか?

おすすめ記事