Windows環境変数に対応するUnixがあるかどうか疑問に思いますPATHEXT
。
Windowsの背景知識がない場合:ファイルサフィックスを追加すると、PATHEXT
cmd.exeにサフィックスを入力せずにスクリプトを実行できます。たとえば、私のWindowsコンピュータでは、PATHEXTにはサフィックスが含まれており、.pl
cmd.exeでPerlスクリプトを実行するにはサフィックスを入力するだけですmy-script
。ただし、Bashで同じスクリプトを実行するには、フルネームを作成する必要がありますmy-script.pl
。
私は現在WindowsとUnixの両方で作業しているので、Unixシステムに戻るときにサフィックス入力を忘れてしまうトラップにほとんどいつも落ちます。
ベストアンサー1
最も簡単な解決策は、スクリプト拡張を使用しないことです。これは必須ではなく、コンピュータ以外のユーザーにスクリプトの種類を識別するためにのみ使用されます。 Windowsは拡張子を使用してファイルタイプを識別しますが、* nixシステム(まれな場合を除くgzip
)は使用しません。
バイナリファイルは* nixに.exe
拡張子がなく、単に呼び出されるfoo
ことに注意してくださいfoo.exe
。したがって、foo.pl
実行可能ファイルが必要な場合は、foo
最初にファイルを保存してください。foo
または、何らかの理由で拡張機能が必要な場合は、スクリプトを保存したディレクトリに移動して次のコマンドを実行してください。
for f in *.*; do ln -s "$f" "${f%%.*}"; done
これは拡張子を持つすべてのファイルに対して繰り返され、その中の各ファイルについてを指すfoo.ext
名前のリンクが生成されます。名前は同じですが、拡張子が異なるスクリプトが複数ある場合、この操作は失敗します。foo
foo.ext