Команда для определения пути каталога по имени файла
Пример простой:
$ dirname /usr/bin/module-assistant
/usr/bin
Пример использования в скрипте: допустим данный скрипт запускает exe-файл в wine, используя нестандартный wine-префикс. Скрипт лежит в папке с префиксом, например так: /home/user/.wine_bank/runbank.sh
# Получаем текущий каталог
$ export DIR=`dirname $0`
# Сообщаем wine о том, в какой папке следует искать "виртуальную винду"
$ export WINEPREFIX=$DIR
# Запускаем наш EXE-файл
$ wine $DIR/dos_devices/drive_c/Program\ Files/bank-client/bank.exe
С использованием readlink Нужно запустить файл лежащий рядом с данным скриптом, при том, что запускаем мы не сам скрипт а симлинк на него. Может пригодиться, например для запуска java-приложений скачанных отдельно а не через репозиторий. Допустим приложение - файл tool.jar:
#!/bin/sh
LINK=`readlink $0`
if [ -z ${LINK} ]; then
LINK=$0
fi
DIRNAME=`dirname ${LINK}`
java -jar $DIRNAME/tool.jar