現在のシェルを確認するcheckbashisms準拠の方法
私.profileので、次のコードを使用して、ログインシェルが実際にBashである場合にのみBash関連のエイリアスと関数がソースされるようにします。 # If the current (login) shell is Bash, then if [ "${BASH_VERSION:-}" ]; then # source ~/.bashrc if it exists. if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 現在、シェル構成ファイル、スクリプト、および関数をバージョン管理下に置いています。また、最近、Bash固有の機能の恩恵を受けないカジュアルなBashismをシェルスクリプトから削除するプロセスを開始function funcname()しましたfuncname()。たとえば、に置き換えます。 シェルファイルリポジトリには、リポジトリ内の各ファイルでDebianのdevscriptsパッケージからユーティリティを実行するpre-commitフックを設定し、Bash固有の構文を誤って導入しないようにしました。ただし、これによりmyのエラーが発生します。checkbashismssh.profile possible bashism in .profile line 51 ($BASH_SOMETHING): if [ "${BASH_VERSION:-}" ]; then 私は、どのシェルが実行されているかをチェックする方法があり、それが警告をトリガーしないかどうか疑問に思っていましたcheckbashisms。 POSIXによってリストされたシェル関連の変数のリストをチェックして、現在のシェルを表示するために使用できることを期待しました。また、インタラクティブなDashシェルで設定された変数を調べましたが、適切な候補を見つけることができませんでした。 現時点では、.profile処理対象から除外していますcheckbashisms。小さいファイルなので、手動で確認するのは難しくありません。ただし、問題を調査した後、実行中のシェル(または少なくともcheckbashisms失敗を引き起こさない方法)を判別するPOSIX準拠のメソッドがあるかどうかを知りたいと思います。 さらなる背景/説明 …