Кажется, ваш код делает то, что вы хотите, хотя readlink -f
не является POSIX.
Еще одно приятное решение, отличное от POSIX:
if [ "$(df --output=fstype /etc/mtab | tail -n +2)" = "proc" ]; then
(Это должно работать даже, если файловая система proc не смонтирована в / proc)
Но, возможно, в реальном мире этого будет достаточно, чтобы просто проверить
if [ -L /etc/mtab ]; then
Последний даже используется в тестовом наборе util-linux, и до сих пор они не получали отчетов об ошибках. Похоже, что в любом существующем дистрибутиве Linux / etc / mtab является либо обычным файлом, либо символической ссылкой на / proc / self / mounts.