VVitafresh писал(а):Если запускать скрипт вручную так:
- Код: Выделить всё
./runprogram.sh
то текущим каталогом будет тот, из которого запускается скрипт.
Верное утверждение, но я подумал, что оно может ввести в заблуждение автора темы. Текущий каталог в начале работы скрипта (или во всё время его работы, если внутри скрипта его не меняют) никак абсолютно не зависит от того, как скрипт запущен. Вместо этого он всегда равен текущему каталогу запустившей его программы на момент запуска.
Winitar писал(а):И еще, скрип все запускает правильно, если в консоли сначала указать "cd <путь к программе>", и только потом запустить скрипт. Нельзя ли сделать так, что бы путь определялся каждый раз сам (то есть та папка, где лежит скрипт).
Писать в скрипте полный путь к запускаемой программе. Но не к самой яве (нехорошая практика, после переустановки явы в другое место такие скрипты перестают работать; собственно, для этого и была придумана переменная PATH). Если хочется сделать скрипт более универсальным (чтобы он работал при перемещении запускаемой программы вместе со скриптом в другое место) можно программно внутри скрипта выяснить то, где он находится, и подставить нужный путь запускаемой программе:
- Код: Выделить всё
#!/bin/sh
PROGRAMDIR=`which "$0"`
PROGRAMDIR=`dirname $PROGRAMDIR`
java -jar "$PROGRAMDIR/program.jar"
Википедия — это наилучший источник информации по теме «Википедия».