ソース `.filename`を取得する方法は信頼できますか?

ソース `.filename`を取得する方法は信頼できますか?

現在、POSIX仕様は.組み込みドットのオプションを指定しません。

私が次のことをするなら:

$ echo 'echo .' > /tmp/-foo
$ PATH=/tmp "$shell" -c '. -foo'

これにより、他のシェルの結果が異なります。

  • dash, ash, ksh88, Bourne shell, schily sh, schily osh, heirloom sh がうまく動作します。
  • bash、、、、、、、いいえ。yash​​​これらのシェルで実行されるようにコマンドを変更します。ksh93pdkshmkshposh. -- -foo

しかも使用する--のは非互換的な方法なのでPOSIX仕様によると組み込み型は以下に従わない。ユーティリティ構文ガイド無視されます--

zshどちらの場合でも動作する唯一のシェルです。

. filenameそれでは、BourneやPOSIXなどのシェルでこれを確実に動作させるにはどうすればよいですか?

ベストアンサー1

シェル関連の効果を避けるためにフルパスを.. /absolute/path/to/script. relative/path/to/script

とにかく、パスルックアップはソーススクリプトにはほとんど役に立ちません。 PATH検索が必要な場合は、ファイル名がで始まる場合は手動で検索できます。あるいは、単純にするために-ファイル名がで始まらないようにすることもできます。-

おすすめ記事