В bash и выражение расширения параметра
$ nline="${line%%\"*}" #strip everything from first " seen to the end
$ echo "${nline:32}" #print everything from offset 32 to the end
Вызовите stat(2)
для /proc/PID/cwd
и другого каталога и сравните их по кортежу device:inode
.
Пример (обратите внимание, что если не задан переключатель -L
, утилита stat(1)
будет выполнять системный вызов lstat(2)
вместоstat(2)
):
$ mkdir -p /tmp/foo /tmp/bar /tmp/baz
$ cd /tmp/foo
$ echo $$
20890
# mount -B /tmp/bar /tmp/foo
# stat -Lc %d:%i /proc/20890/cwd
2055:1835959
# stat -Lc %d:%i "$(readlink /proc/20890/cwd)" /tmp/foo /tmp/bar
2055:1843068
2055:1843068
2055:1843068
# umount /tmp/foo
# stat -Lc %d:%i /tmp/foo
2055:1835959
Точно так же, как файлы в разделе /proc/PID/fd
, /proc/PID/cwd
не являются настоящей символической ссылкой --файлы open(2)
, stat(2)
и т. д. не будут следовать своей цели, а будут действовать непосредственно на фактический объект, на который они ссылаются..