% docker run -it--rm--platform linux/arm64 ubuntu:25.10 bash
root@097f48f55dc5:/# mkdir -p a/b; cd a/b; rm -rf ../../a
root@097f48f55dc5:/a/b# pwd -L
/a/b
root@097f48f55dc5:/a/b# pwd -P
pwd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
root@097f48f55dc5:/a/b# pwd -L
pwd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
root@097f48f55dc5:/a/b# cd ../..
chdir: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
root@097f48f55dc5:../..# pwd -P.
root@097f48f55dc5:../..# pwd -L../..
root@097f48f55dc5:../..# ls -a. .dockerenv boot etc lib mnt proc run srv tmp var
.. bin dev home media opt root sbin sys usr
root@097f48f55dc5:../..# ls -l /proc/1/cwd
lrwxrwxrwx 1 root root 0 Nov 514:24 /proc/1/cwd -> /
Discussion
具体例だとこういう感じですよね
cwdまたは親ディレクトリがリネームされた場合、削除された場合、アクセス権限がない場合なども重要ですね。
面白い記事ありがとうございます!
実際に実験してみましたのですが、期待と異なる結果が得られたので共有です。
bashやzshで以下のように
pwd -Pとpwd -Lの出力を壊すことができるのですが、実行コマンドのcwdは壊れていませんでした。これは、シェル上の物理と論理のcwdに加え、カーネル上のプロセスに対するcwdという3種類があることになりますかね?