LINUX.ORG.RU

Конвертация .bin команды в .sh

 , , , ,


0

2

как мне в .sh файл на Ubuntu правильно конвертировать команду с Windows, которая запускает джарку от определенной версии Java

"C:\Program Files\Java\jre1.8.0_431\bin\java.exe" -Xmx8G -jar paper-1.13.2-657.jar

чтобы она также корректно заработала на Linux - Ubuntu.

Будет ли корректна конвертация этой команды таким путём?

#!/bin/bash

"/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/" -Xmx8G -jar paper-1.13.2-657.jar

Ответ на: комментарий от firkax

Добавлю ещё: убери /bin/bash, скрипты надо /bin/sh писать.

Как минимум, это дискуссионный вопрос. Например, в Редхатовых /bin/sh – это алиас на баш с --posix. А в Дебиановых – это dash. Т.е. на двух самых распространенных системах мы получаем уже выполнение на двух разных шеллах. Которые совместимы. Как будто бы.

А баш может и не самый быстрый, но он везде один.

MoldAndLimeHoney
()
Ответ на: комментарий от firkax

С чего это вдруг надо?

В шебанг (#!) вообще указывается интрепретатор, который должен обработать код, написанный ниже и там может быть любой интерпретатор.

К тому же в bash больше фишек, чем просто в sh. Если в скрипте простой вызов команды с параметрами - можно и sh конечно, а если там скрипт с вызовом функций, прочих особенностей - нужно указывать тот интерпретатор, на котором он написан.

kostik87 ★★★★★
()
Ответ на: комментарий от u5er

Во-первых, «скрипт» автора написан не для баша, он подойдёт к любому шеллу.

Во-вторых, не надо писать скрипты «специально под баш»! Это дурной тон и нубство. Надо ставить /bin/sh и пользоваться только posix-синтаксисом.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Это дурной тон и нубство

С чего вдруг? Если скрипт написан для баша и в шебанге прописан баш, то почему бы и нет?

Надо ставить /bin/sh и пользоваться только posix-синтаксисом.

С чего вдруг?(2) Если в системе всё равно есть баш, то почему бы его не использовать?

u5er ★★
()
Ответ на: комментарий от Stanson

Ты ничего не понял. Шебанг с tcc - норм, а вот с башем не норм.

Впрочем использовать его как средство только вызвать одно system() конечно не надо.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Какая нахрен разница, для кастомного-то скрипта для личного использования?

Да, в каком-нибудь пакете для массового распространения, причём софтины которая пердназначена для запуска на всём от роутеров с OpenWrt до серваков с десктопами, /bin/bash может и не лучшая идея. Так же как /usr/bin/python3 или там /usr/bin/ruby, ибо баша с питоном и руби может и не быть на целевой системе, но в ОП речь про конкретный локальный костылик чтобы на данной тачке с данным дистром удобненько пускать команду с кучей специфичных для данного юзкейса аргументов.

Stanson ★★★★★
()
Ответ на: комментарий от firkax

Такая что не надо создавать проблемы на ровном месте ради ничего. /bin/sh заведомо переносимый и нет причин организовывать диверсии с неожиданностями.

И куда же ОП собирается переносить свой скриптик с захардкоженными путями?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Незачем тратить время на рассуждения «а где будет и не будет запускаться скрипт, а ты точно уверен в этом, а то, а сё на 100 лет вперёд» - это трата времени впустую. Просто используй sh везде и всё. Это несложно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от u5er

Нет, либо на скриптоязыки (пхп питон) либо на компилируемые языки (си). А баш это непонятная ерунда, которая с одной стороны ничего существенного не даёт (а то что даёт - дурацким синтаксисом), а с другой портит единственную фичу шелла ради которой его используют - всеобщую совместимость.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ты ничего не понял. Шебанг с tcc - норм, а вот с башем не норм.

Так объясни, а то ты пока что косплеишь решалу, который пытается отрегулировать всем жизнь.

Программа пишется под конкретный интерпретатор, который прописывается в шебанге. Программи написана под баш? Значит баш указывается в шебанге. Всё просто.

Или конкретно тебя воротит от конкретно баша и поэтому ты всех пытаешься с него пересадить на что-то «более нормальное»?

u5er ★★
()
Ответ на: комментарий от rtxtxtrx

ты неправильно все произносишь

каждый имеет право заблуждаться, иметь предрассудки в тч фирфокс

И rtx-как-то-там и u5er. И на этом остановимся ;)

u5er ★★
()
Ответ на: комментарий от MagicMirror

если бы через докер запускал, где версия указана, то запускался бы.там ломающие обновления были между 3.11 и 3.12 когда типы в другие модули перенесли, а cgi.parse_header просто выбросили

rtxtxtrx ★★
()
Ответ на: комментарий от firkax

Нет, либо на скриптоязыки (пхп питон) либо на компилируемые языки (си). А баш это непонятная ерунда, которая с одной стороны ничего существенного не даёт (а то что даёт - дурацким синтаксисом), а с другой портит единственную фичу шелла ради которой его используют - всеобщую совместимость.

Т.е. bash’ем ты не пользовался и шел не понимаешь. Интересно, а это не может быть как-то связано?

router ★★★★★
()
Ответ на: комментарий от router

Чего? Пользовался конечно - как интерактивным шеллом. Он в отличие от sh умеет редактировать командную строку нормально и историей управляет.

И что значит не понимаю? Понимаю конечно. «Непонятная ерунда» расшифрована дальше в той же цитате была - а именно непонятна его ниша применения. Кодить на нём алгоритмы хоть и можно, но такой код выглядит ужасно и в исходнике, и когда понимаешь сколько лишних действий происходит ради какой-то простой операции. Для этого лучше использовать хотя бы пхп. А шелл годится чтобы запустить по очереди несколько прог, возможно с простым конвеером stdio/stdout/stderr между ними и какими-нить тривиальными условиями вида «файл существует», «программа завершилась успешно» и подобное. Даже поптыки сделать простую арифтметику (expr) или сравнения чисел уже смотрятся крайне убого и, хоть их поддерживает даже posix shell (через внешние проги) - лучше в шелле такое не использовать.

firkax ★★★★★
()
Ответ на: комментарий от rtxtxtrx

в обход пакетных менеджеров

А других способов в 4/5 случаев не предусмотренно, суровый pip install -r requirements_versions.txt. И не работающий - надо через раз идти в issues чтобы найти как чинить очередное ModuleNotFoundError:. ***** ваш питон и софт на нём.

MagicMirror ★★
()