Как разрешить символические ссылки в сценарии оболочки

Учитывая абсолютный или относительный путь (в 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"

Ответы на вопрос(17)

Ваш ответ на вопрос