Я всегда делал:
SCRIPT_PATH=$(cd `dirname ${0}`; pwd)
Я никогда не использовал readlink раньше: это только Gnu? (т.е. будет ли он работать на HP-UX, AIX и Solaris из коробки? dirname и pwd будут ....)
(отредактировано, чтобы добавить ``, которое я забыл в оригинальном сообщении. D'oh!)
(отредактируйте 2, чтобы поставить две строки, которые я, очевидно, всегда делал, когда смотрю на предыдущие сценарии, которые написал, но не запомнил правильно. Первый вызов получает путь, второй вызов устраняет относительный путь)
(отредактируйте 3 исправленные опечатки, которые не позволяли работать однострочному ответу, назад к одной строке!)