Я пытаюсь использовать realpath в сценарии, который должен гарантировать, что он находится под определенным (возможно, символьным) путем. Также скрипт должен быть запущен из любого места, поэтому он не может предполагать, что текущий каталог является тем, в котором находится скрипт. Но...
$ mkdir dir
$ touch dir/script
$ ln -s dir symlink
$ realpath -s symlink/script
/tmp/symlink/script
$ realpath -s symlink
/tmp/symlink
Пока все хорошо: realpath
по умолчанию разрешает символическую ссылку, но ключ -s
делает то, что нам нужно.
$ cd symlink
$ realpath -s script
/tmp/dir/script
$ realpath -s .
/tmp/dir
Почему в этом случае результат такой же, как и без -s
? Даже если предположить, что разрешение символьных ссылок работает особым образом для текущего каталога, в любом случае здесь есть несоответствие:
$ realpath -s ../symlink/script
/tmp/symlink/script