UnixにはWindows環境変数PATHEXTに対応する変数はありますか?

UnixにはWindows環境変数PATHEXTに対応する変数はありますか?

Windows環境変数に対応するUnixがあるかどうか疑問に思いますPATHEXT

Windowsの背景知識がない場合:ファイルサフィックスを追加すると、PATHEXTcmd.exeにサフィックスを入力せずにスクリプトを実行できます。たとえば、私のWindowsコンピュータでは、PATHEXTにはサフィックスが含まれており、.plcmd.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名前のリンクが生成されます。名前は同じですが、拡張子が異なるスクリプトが複数ある場合、この操作は失敗します。foofoo.ext

おすすめ記事