Не срабатывает файл sh

Имею файл dontstarve.sh со следующим содержимым:

#!/bin/bash
export LD_LIBRARY_PATH=./lib64
./dontstarve

Если запускать из любого файлового менеджера он срабатывает. Если создать ссылку на приложение не срабатывает. Из консоли так же не срабатывает, ругается на отсутствие файла ./dontstarve, хотя он есть в том же каталоге. В чем может быть загвостка?

А если вместо ./bla-bla полный путь прописать и без ./? Просто как вариант.

Так каждый может! :slight_smile: Хотелось бы сохранить портабельность и разобраться в поведении скрипта.

Для начала загвоздка в том, что вы не показали вывод запуска из консоли. Сначала полный лог того, как запускаете и что отвечают, а потом - остальные действия.

KOT@linux-sonk:~> ~/bin/dontstarve64/bin/dontstarve.sh
/home/KOT/bin/dontstarve64/bin/dontstarve.sh: line 3: ./dontstarve: Нет такого файла или каталога

Ссылка на приложение самая обычная, лежащая на рабочем столе.

  1. Для всяческих экспортов отлично подходит ~/.bash_profile (смотрим гугл или мануалы, что это за файл)
  2. /home/KOT/**bin/**dontstarve64/**bin/**dontstarve.sh - как у вас вообще что-то с такими путями запускается…

Дальше даже лень что-то еще расписывть, случай похож на клинический…

  1. Ничего не понял. Поспрошал у остальных больных в палате, они тоже не поняли.lol!
  2. Преспокойно, из любого файлового менеджера. А что не так с путями, потрудитесь объяснить? ~/**bin **стандартная папка для всяких “левых” исполняемых файлов (как я понял). dontstarve64/**bin/**dontstarve.sh это распакованная портативная игра. Менять порядок каталогов игры я не рискнул бы.

Конструкция вида ./dontstarve - развернется в путь который возвращает команда pwd плюс /dontstarve. Если ты находишься в другом каталога, то эта конструкция естественно не сработает - симлинк находится в другом каталоге. Ее результат ‘/другой/каталог/dontstarve’.
Никаких загвоздок тут нет, читай документацию.

Всем спасибо, разобрался. Надо просто в начале скрипта добавить строчку

cd "`dirname "$0"`"

И все работает. А файловые менеджеры видимо автоматом подставляют текущий путь.

~/**bin **стандартная папка для всяких “левых” исполняемых файлов

echo $PATH - если ~/bin есть в $PATH (по дефолту есть). Но не ее подкаталоги!! Достаточно было создать в ~/bin символьную ссылку на ваш скрипт.
… а еще проще - кнопачку на рабочем столе/ пункт в меню, т. е. обычный desktop-файл.

пичаль-тоска.

Так он ведь не работал. Но теперь после добавления строчки в скрипте работает :wink: