現在、POSIX仕様は.
組み込みドットのオプションを指定しません。
私が次のことをするなら:
$ echo 'echo .' > /tmp/-foo
$ PATH=/tmp "$shell" -c '. -foo'
これにより、他のシェルの結果が異なります。
dash
,ash
,ksh88
, Bourne shell, schily sh, schily osh, heirloom sh がうまく動作します。bash
、、、、、、、いいえ。yash
これらのシェルで実行されるようにコマンドを変更します。ksh93
pdksh
mksh
posh
. -- -foo
しかも使用する--
のは非互換的な方法なのでPOSIX仕様によると組み込み型は以下に従わない。ユーティリティ構文ガイド無視されます--
。
zsh
どちらの場合でも動作する唯一のシェルです。
. filename
それでは、BourneやPOSIXなどのシェルでこれを確実に動作させるにはどうすればよいですか?
ベストアンサー1
シェル関連の効果を避けるためにフルパスを.
。. /absolute/path/to/script
. relative/path/to/script
とにかく、パスルックアップはソーススクリプトにはほとんど役に立ちません。 PATH検索が必要な場合は、ファイル名がで始まる場合は手動で検索できます。あるいは、単純にするために-
ファイル名がで始まらないようにすることもできます。-