Не запускается скрипт, просто ничего не происходит на UBUNTU

#!/usr/bin/env sh

# Prevent sudo/root to run the script
if [ "$(\id -u)" -eq 0 ]; then
    # overkill privileges message
    if command -v zenity >/dev/null; then
        zenity --warning --text="Don't run software from somewhere other than the \
repositories via sudo or as root user." --width=450 \
        --title="Unnecessary privileges" >/dev/null 2>&1
        exit
    elif command -v kdialog >/dev/null; then
        kdialog --sorry "Don't run software from somewhere other than the \
repositories via sudo or as root user." --title="Unnecessary privileges" >/dev/null 2>&1
        exit
    else
        printf "\n  Don't run software from somewhere other than the \
repositories via sudo or as root user.\n\n"
        exit
    fi
fi

# Only one script instance
if [ "${FLOCKER}" != "$0" ]; then
    exec env FLOCKER="$0" flock -n "$0" "$0" "$@" 2>/dev/null
fi

# Move to the script directory
cd "$(dirname "$(readlink -f "$0")")"/game || exit

# Backup original steamclient.so & copy Goldberg steamclient.so
mkdir -p ~/.steam/sdk64
mv ~/.steam/sdk64/steamclient.so ~/.steam/sdk64/steamclient.so.orig
cp lib/steamclient.so ~/.steam/sdk64/steamclient.so

# Run the game
export SteamAppPath=.
export SteamAppId=1142710
export SteamGameId=1142710
faketime '2020-12-31 00:00:00' bin/TotalWarhammer3

# Restore original steamclient.so & delete Goldberg steamclient.so
rm -f ~/.steam/sdk64/steamclient.so
mv ~/.steam/sdk64/steamclient.so.orig ~/.steam/sdk64/steamclient.so

Ответы (1 шт):

Автор решения: Pak Uula

Поставьте в самое начало скрипта инструкцию set -x и запустите скрипт в консоли. Шелл распечатает вам все выполненные команды. У меня выполнение закончилось на строке exec env FLOCKER="$0" flock -n "$0" "$0" "$@" 2>/dev/null и дальше ничего не было, так как вывод flock направлен в /dev/null

Уберите в этой строке 2>/dev/null и запустите скрипт снова. После этого будет видно, что скрипт ломается с сообщением ./some.sh: 28: cd: can't cd to /home/user/tmp/game

Ок, создал для него /home/user/tmp/game и запустил снова. В очередной раз скрипт сломался с сообщением

+ mv /home/user/.steam/sdk64/steamclient.so.orig /home/user/.steam/sdk64/steamclient.so
mv: cannot stat '/home/user/.steam/sdk64/steamclient.so.orig': No such file or directory

Логично, ведь у меня нет стима.

Дальше продолжать не стал. У скрипта так много вариантов поломаться, все не перебрать. Главное вы поняли - нужно разрешить flock-у выводить сообщения об ошибках и включить трассировку выполнения, и тогда вы сможете узнать причины отказов.

→ Ссылка