Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Запуск приложения из текущей папки.  (Прочитано 8536 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gubtor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Есть java-приложение, упакованное в jar. Есть launcher, который его запускает (Launcher создавался на рабочем столе (ПКМ -> Create launcher)). Launcher находиться в той же папке, что и приложение.

Нужно запустить приложение не прописывая полный путь в launcher'е. То есть в launcher’e вместо /home/user/MyDirectory/Filename.jar нужно прописать что-то вроде *CurrentLocation*/Filename.jar.

Есть ли способ это осуществить?
How does one patch KDE2 under FreeBSD?

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #1 : 10 Февраля 2011, 14:25:21 »
Обычно из текущей папки запускают как-то так:
./команда
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #2 : 10 Февраля 2011, 14:31:48 »
В PATH допишите ./ и будет находить и запускать без ./

Оффлайн scsiman

  • Активист
  • *
  • Сообщений: 344
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #3 : 10 Февраля 2011, 14:33:25 »
А вот в PATH прописывать ./ не следует!
Dell Studio XPS 16, Ubuntu 16.04 LTS (Home).
HP nx6110, Ubuntu 8.04 LTS => 10.04 LTS (Home).

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #4 : 10 Февраля 2011, 14:38:54 »
Цитировать
А вот в PATH прописывать ./ не следует!
Это, вроде бы, не безопасно.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Gubtor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #5 : 10 Февраля 2011, 14:41:31 »
Обычно из текущей папки запускают как-то так:
./команда

Пробовал уже - не запускает. Вот скриншот, может что-нибудь не так делаю.
How does one patch KDE2 under FreeBSD?

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #6 : 10 Февраля 2011, 14:49:53 »
А в чем небезопасность ?
комманда
или
./комманда
Если комманды нет в текущей директории, то не запустится в любом случае.
Если есть, то там и там запустится.
Лично я не вижу никакой разницы.
Объясните.

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #7 : 10 Февраля 2011, 14:52:24 »
А в чем небезопасность ?
В наличии, например, исполняемого файла /home/hacker/ls, который себя не показывает, но добавляет юзера hacker в sudoers.
Обычно из текущей папки запускают как-то так:
./команда
Пробовал уже - не запускает. Вот скриншот, может что-нибудь не так делаю.
Насколько мне известно, JAR-ы запускаются командой
java -jar Tratata.jar
« Последнее редактирование: 10 Февраля 2011, 14:53:55 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #8 : 10 Февраля 2011, 15:00:21 »
Я пишу вредный скрипт, сохраняю его в файле, скажем, ls и делаю его исполняемым. Даю это файл вам, или вы его скачиваете и т.п. В консоли заходите в папку с этим скриптом (допустим, там много файлов, а мой вредный - один из них). Логично, что первое, что вы захотите сделать, зайдя в новый каталог, так это запустить команду ls. А так как путь ./  прописан в $PATH, то мой вредный скрипт и запустится.
Может быть сейчас уже как-то это решили, но раньше было так.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #9 : 10 Февраля 2011, 15:04:17 »
Спасибо, теперь ясно, что так делать нельзя.

Оффлайн Gubtor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #10 : 10 Февраля 2011, 15:20:15 »
Насколько мне известно, JAR-ы запускаются командой
java -jar Tratata.jar
Я файл Taratata.jar сделал executable, так что запускается и без java -jar.

На всякий случай попробовал java -jar ./Tratata.jar - не работает. Дело в том, что при Tratata.jar, что и при ./Tratata.jar  система пытается запустить файл в /home/gubtor/Tratata.jar а не в /home/gubtor/workspace/Tratata.jar

Даже не знаю куда копать...
How does one patch KDE2 under FreeBSD?

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #11 : 10 Февраля 2011, 15:31:07 »
classpath поищите.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Запуск приложения из текущей папки.
« Ответ #12 : 10 Февраля 2011, 15:33:33 »
Нужно запустить приложение не прописывая полный путь в launcher'е. То есть в launcher’e вместо /home/user/MyDirectory/Filename.jar нужно прописать что-то вроде *CurrentLocation*/Filename.jar.

Есть ли способ это осуществить?

Для определения рабочей директории в launcher'e есть параметр Path.
По дефолту Path=$HOME.

Для запуска команд/приложений используется параметр Exec.
Можно
1) использовать команды и приложения из $PATH
2) запускать файлы из рабочей директории через "./"
3) сделать финт ушами и запихать туда небольшой скрипт, выполняемый через "bash -c"

Оффлайн Gubtor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Запуск приложения из текущей папки.
« Ответ #13 : 10 Февраля 2011, 16:07:06 »
2) запускать файлы из рабочей директории через "./"
Так не запускает. В параметрах launcher'а в строке Command прописываю ./Tratata.jar и из текущей папки приложение не запускается, пытается launcher запустить из /home/gubtor/

Насчет изменения $PATH не совсем понял. Где такой параметр изменяется для конкретного launcher'а?

Пользователь решил продолжить мысль 10 Февраля 2011, 16:14:30:
На всякий случай вот исходник моего launcher'а

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_GB]=gnome-panel-launcher
Exec=Tratata.jar
Name[en_GB]=TratataStarter
Name=TratataStarter
Icon=gnome-panel-launcher

Дописывание строки Path=./ не помогло
« Последнее редактирование: 10 Февраля 2011, 16:14:30 от Gubtor »
How does one patch KDE2 under FreeBSD?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Запуск приложения из текущей папки.
« Ответ #14 : 10 Февраля 2011, 16:24:52 »
Gubtor, вероятно, средствами launcher'а невозможно получить путь до каталога, в котором он находится.
Однако, если имеется несколько заранее известных вариантов, или же этот путь можно как-то рассчитать, то становится возможным
3) сделать финт ушами и запихать туда небольшой скрипт, выполняемый через "bash -c"
который будет выбирать 1 из нескольких вариантов пути.
« Последнее редактирование: 10 Февраля 2011, 16:27:14 от arcfi »

 

Страница сгенерирована за 0.082 секунд. Запросов: 23.