Учитывая абсолютный или относительный путь (в Unix-подобной системе), я хотел бы определить полный путь к цели после разрешения любых промежуточных символических ссылок. Бонусные баллы за одновременное разрешение ~ имени пользователя.
Если целевым является каталог, возможно, в chdir() можно будет ввести каталог, а затем вызвать getcwd(), но я действительно хочу сделать это из оболочки script вместо написания помощника C. К сожалению, оболочки имеют тенденцию пытаться скрыть существование символических ссылок от пользователя (это 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
$
То, что я хочу, это функция resolve(), которая при выполнении из каталога tmp в приведенном выше примере разрешает ( "foo" ) == "/Users/greg/tmp/bar".