Как разрешить символические ссылки в сценарии оболочки
Учитывая абсолютный или относительный путь (в Unix-подобной системе), я бы хотел определить полный путь к цели после разрешения любых промежуточных символических ссылок. Бонусные баллы за одновременное разрешение ~ имени пользователя.
Если целью является каталог, возможно, можно выполнить chdir () в каталог и затем вызвать getcwd (), но я действительно хочу сделать это из сценария оболочки, а не писать помощник по Си. К сожалению, оболочки имеют тенденцию пытаться скрыть существование символических ссылок от пользователя (это bash для OS X):
$ ls -ld foo bar
drwxr-xr-x 2 greg greg 68 Aug 11 22:36 bar
lrwxr-xr-x 1 greg greg 3 Aug 11 22:36 foo -> bar
$ cd foo
$ pwd
/Users/greg/tmp/foo
$
То, что я хочу, это функция resol (), такая, что при выполнении из каталога tmp в приведенном выше примере, resol ("foo") == "/Users/greg/tmp/bar"