LINUX.ORG.RU
решено ФорумTalks

[ОБС] Играл я тут в портал 2, а там


0

1

portal.sh

#!/bin/bash

# figure out the absolute path to the script being run a bit
# non-obvious, the ${0%/*} pulls the path out of $0, cd's into the
# specified directory, then uses $PWD to figure out where that
# directory lives - and all this in a subshell, so we don't affect
# $PWD

GAMEROOT=$(cd "${0%/*}" && echo $PWD)

#determine platform
UNAME=`uname`
if [ "$UNAME" == "Darwin" ]; then
   # prepend our lib path to LD_LIBRARY_PATH
   export DYLD_LIBRARY_PATH="${GAMEROOT}"/bin:$DYLD_LIBRARY_PATH
elif [ "$UNAME" == "Linux" ]; then
   # prepend our lib path to LD_LIBRARY_PATH
   export LD_LIBRARY_PATH="${GAMEROOT}"/bin:$LD_LIBRARY_PATH
fi

if [ -z $GAMEEXE ]; then
	if [ "$UNAME" == "Darwin" ]; then
		GAMEEXE=portal2_osx
	fi
fi

ulimit -n 2048

# and launch the game
cd "$GAMEROOT"

STATUS=42
while [ $STATUS -eq 42 ]; do
	if [ "${DEBUGGER}" == "gdb" ]; then
		ARGSFILE=$(mktemp $USER.portal2.gdb.XXXX)
		echo run $@ > "$ARGSFILE"
		${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} -x "$ARGSFILE"
		rm "$ARGSFILE"
	else
		${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
	fi
	STATUS=$?
done
exit $STATUS

Правда при попытке запуска пишет

sh ./portal2.sh 
: not foundh: 2: 
: not foundh: 8: 
: not foundh: 10: 
./portal2.sh: 16: Syntax error: "elif" unexpected (expecting "then")

А после небольшой правки

sh ./portal2.sh 
: not foundh: 2: 
: not foundh: 8: 
: not foundh: 10: 
./portal2.sh: 45: Syntax error: end of file unexpected (expecting "then")

Но вообще, подозрительно это как-то.


Эх, мечты-мечты...

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

Пока доставляет просто неимоверно.

libfun
() автор топика
Ответ на: комментарий от firestarter

Вообще видно, что это скрипт для запуска на макоси, но «elif» кагбе намекает.

libfun
() автор топика

А в роли sh у тебя какой интерпретатор? Там в sha-bang явно указано, что нужен bash. Попробуй bash ./portal.sh

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

>>elif [ «$UNAME» == «Linux» ]; then

can't into чтение?


Лень было читать. Нет такой переменной. Может сделали на случай появления макоси на ядре Linux (а может они в курсе что в будущем появится)?

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

> макоси на ядре Linux
DO WANT! Им тоже пора помучаться.

Deleted
()

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

"/media/Win/Program Files (x86)/!Games/Portal 2/portal2_osx": not in executable format: Формат файла не распознан
root.portal2.gdb.OGv7:1: Error in sourced command file:
No executable file specified.
libfun
() автор топика
Ответ на: комментарий от firestarter

>Лень было читать. Нет такой переменной.

Взглянул случайно, увидел это: UNAME=`uname`
Ладно. :D

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

Есть такая переменная (UNAME=`uname`).

$uname
Linux
Вполне может жить.

Darth_Revan ★★★★★
()

Фороникс об этом год назад верещал, когда Half-Life 2 и Team Fortress 2 под MacOS вышли, мол, на днях Steam под Linux будет, нашли упоминание в файлах игры. Как видим, этого не случилось

MyFreedom ★★★
()

Но вообще, подозрительно это как-то. Эту строчку видишь ?

#!/bin/bash

а в бубунте sh показывает на какой-нибудь ash, поэтому не работает

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

Тоже мне эксперт.
!#/bin/bash -это явное указание, интерпретатором по какому пути пользоваться. То есть если sh на ash ссылается, то всё равно будет запускаться BASH.

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

гонишь

$ cat 1.sh
#!/bin/bash

self=$$
ls -l /proc/$self/exe

$ ash 1.sh
lrwxrwxrwx 1 xxx users 0 Apr 21 08:22 /proc/11042/exe -> /bin/ash
Reset ★★★★★
()
Ответ на: комментарий от libfun

Это не просто комментарий. Это комментарий особого вида в первой строке скрипта. Подобное поведение описано в POSIX, если мне память не изменяет. И Reset зря тут слюнями брызжет. Все верно Quasar написал.

Если вызывать скрипт командой вида sh ./script.sh, то интерпретатором будет именно sh, а если вызвать просто ./script.sh, то интерпретатором будет выбрано либо то, что записано в первой строке скрипта (например /bin/bash), либо текущий shell-интерпретатор (если /bin/bash не существует).

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

Наврал. POSIX тут не при чем. Такое поведение было впервые описано Денисом Ритчи в 1979 году и было реализовано в седьмой версии Unix - прародительнице всех современных BSD и Unix систем.

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

Все верно Quasar написал.

Не верно, опровержение я дал.

Если вызывать скрипт командой вида sh ./script.sh, то интерпретатором будет именно sh, а если вызвать просто ./script.sh, то интерпретатором будет выбрано либо то, что записано в первой строке скрипта (например /bin/bash), либо текущий shell-интерпретатор (если /bin/bash не существует).

согласись, что это совсем не то, что написал Quasar ?

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

либо текущий shell-интерпретатор (если /bin/bash не существует).

тоже весьма спорно:

$ cat 2.sh
#!/bin/wtf

hui

$ ./2.sh 
bash: ./2.sh: /bin/wtf: плохой интерпретатор: Нет такого файла или каталога

Первую строку в скрипте смотрит ядро. Если исполняемого файла нет, то как оно узнает о текущем шеле? В /etc/passwd чтоль полезет? Это уже слишком сложная логика получается.

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

Хм. Действительно. Не обратил внимание, что ТС запускал скрипт через sh. ССЗБ, как говорится.

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

да. На порядок :)
Я бы не советовал не поиграв в Портал1 играть во второй )

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

>Port Windows-based games to the Linux platform.

o_O Всё-таки Valve когда-нибудь это сделает))

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

Фороникс об этом год назад верещал, когда Half-Life 2 и Team Fortress 2 под MacOS вышли, мол, на днях Steam под Linux будет, нашли упоминание в файлах игры. Как видим, этого не случилось

Есть мнение, что версия под Linux у них давно есть, но её не выпускают из-за отсутствия steam'а. И это вдвойне обидно =(.

Deleted
()
Ответ на: комментарий от Shtsh

Интересно. Сложных загадок пока не встретил, встретил красивые. Ну и сюжет. Сюжет доставляет неимоверно.

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

о_О как это? Они халфу запилили, а стим не смогли?

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

Потому что 3я пенумбра это игра-головоломка как и портал. Жанр у них один.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.