realpathは私のディレクトリが存在しないと言いますが、存在します。

realpathは私のディレクトリが存在しないと言いますが、存在します。

realpath私はこのコマンドの動作を理解していません。

$ touch wombat
$ ls
wombat
$ cd /home/amy/test
$ ls
wombat
$ realpath --relative-to=. /home/amy/test/wombat
realpath: --relative-to=.: No such file or directory
/home/amy/test/wombat
$ realpath --relative-to=/home/amy/test /home/amy/test/wombat
realpath: --relative-to=/home/amy: No such file or directory
/home/amy/test/wombat

私は両方のコマンドが返されると予想しましたwombat。しかし、彼らは私が持っているディレクトリやその親ディレクトリが存在しないと言っているようです。ルートディレクトリが存在しないことを知らせます。

$ realpath --relative-to=/ /home/amy/test/wombat
realpath: --relative-to=: No such file or directory
/home/amy/test/wombat

最近書いたいくつかのコードが機能しなくなったので、これを見つけました。それでは、動作がrealpath変更された可能性がありますか?

$ uname -a
Linux nixos 5.4.79 #1-NixOS SMP Sun Nov 22 09:14:12 UTC 2020 x86_64 GNU/Linux

編集する:さて、ちょっと変です。最近アップグレードしたNixOSに問題がある可能性があります。

$ realpath --version
realpath: --version: No such file or directory

編集する:ますます気になります。

$ tar --version
tar (busybox) 1.31.1
$ python --version
Python 2.7.18
$ realpath -P
realpath: -P: No such file or directory
$ realpath --physical
realpath: --physical: No such file or directory

編集する:

$ type realpath
realpath is /run/current-system/sw/bin/realpath

これはNixOSでは普通のようです。たとえば、

$ type tar
tar is /run/current-system/sw/bin/tar

編集する:私の考えには私にアイデアがあると思います。私は最近NixOSパッケージにbusyboxを追加しました。以下の出力に基づいて、私はおなじみのアドオンなしでrealpathより簡単なバージョンを提供すると思います。

$ realpath --help
BusyBox v1.31.1 () multi-call binary.

Usage: realpath FILE...

Return the absolute pathnames of given FILE

ベストアンサー1

@thanasisp、@crtl-alt-delor、および@ilkkachuのおかげで、この問題を解決できました。次のコマンドを試したとき、電球の瞬間が来ました。

$ realpath --help
BusyBox v1.31.1 () multi-call binary.

Usage: realpath FILE...

Return the absolute pathnames of given FILE

これは2つの事実を伝えます。 1) 私はこのコマンドの BusyBox バージョンを実行しています。 2)そのバージョンはrealpath私が使ってきたコマンドスイッチをサポートしていません。

その後、このコマンドが最後に動作したときからこれまでに変更したことの1つがBusyBoxをインストールすることでした。 BusyBoxをアンインストールした後、通常のバージョンが得られ、期待realpathどおりに動作します。

この問題はNixOSで発生しますが、問題がNixOSに固有のものかどうかはわかりません。

おすすめ記事