0

私が書いている RTOS ( http://www.distortos.org )の場合find、ビルド構成プロセスの一部として (make menuconfigターゲットから) 実行する必要があります。Windows の場合、ユーザーが MSYS2 をインストールしていると想定しているため、find.exe利用可能です。この特定のファイルの唯一の問題は、Windows にもそのようなファイルがあるC:/Windows/system32ことです (おそらく に近いものですgrep)。そのため、名前だけでファイルを呼び出そうとすると、環境変数内のフォルダーの順序に応じて、PATHどちらかが取得されます。

このプログラムをシェル スクリプトまたはシェル スクリプト/bin/findから呼び出すMakefileと、Windows と (私の) Linux の両方で機能することがわかりました。最も重要なことは、そのようfind.exeにすることで、 内のフォルダーの順序に関係なく、常に MSYS2 から呼び出されることですPATH。だから私は疑問に思っています-findこのように呼んでも大丈夫ですか、それとも移植性がなく、運が良かっただけですか?

4

2 に答える 2

1

として参照する方がおそらく移植性が高いでしょう/usr/bin/find。たとえば、Fedora では、/bin実際には へのシンボリック リンク/usr/binであるため、次のいずれかが機能します。

bash-4.3$ ls -l /bin/find
-rwxr-xr-x. 1 root root 222608 Dec 28 18:26 /bin/find
bash-4.3$ ls -l /usr/bin/find
-rwxr-xr-x. 1 root root 222608 Dec 28 18:26 /usr/bin/find

しかし、最近のUbuntuでは:

root@69ca68fbe5c0:/# ls -l /bin/find
ls: cannot access /bin/find: No such file or directory
root@69ca68fbe5c0:/# ls -l /usr/bin/find
-rwxr-xr-x. 1 root root 229992 Jan  6  2014 /usr/bin/find
于 2016-04-18T18:37:49.847 に答える