Я делаю файл оболочки с именем vpk.sh
, который поможет мне преобразовать папки (с кодами, скопированными из здесь ) в vpk файл и принятьаргументы;чтобы не было так сложно его использовать.Первый файл оболочки:
#!/bin/bash
DIR=$(dirname "${BASH_SOURCE[0]}")
export LD_LIBRARY_PATH=$(cd "$DIR" && pwd)
exec "$DIR/vpk_linux32" "${@}"
предназначен для его сохранения в локальном каталоге, поскольку он будет правильно работать с командами .../vpk.sh "example.vpk"
при выполнении из терминала и из любого места.Единственная незначительная проблема заключается в том, что папка будет иметь имя example.
вместо example
.
Проблема, с которой я сталкиваюсь с этим шелл-кодом, являющимся глобальным, а не локальным, заключается в том, что я пытаюсьисправить это самому, но безрезультатно, сохранив его в /usr/share/bin/vpk
, что означает, что его можно выполнить из любого места в любой момент времени:
#!/bin/bash
VPK_LINUX=$(find "${HOME}/.local/share/Steam" -type f -iname "vpk_linux32" -print | head -n 1)
VALVE_LIB_DIR=$(dirname "${LINUX_VPK}")
LD_LIBRARY_PATH="${VALVE_LIB_DIR}:${LD_LIBRARY_PATH}" "$VPK_LINUX" "${1}"
однако, когда я пытаюсь его выполнить, сфайл vpk с именем example
(что дает example.vpk
), как vpk "example.vpk"
в терминале, он начинает извлекать файл vpk в папку с извлеченным содержимым, но в итоге извлекает только первый найденный файл, напримеркак cfg/autoexec.cfg
, но если оно пустое, а не его содержимое, то немедленно прекратите, когда оболочка выдаст ошибку сразу после:
/usr/local/bin/vpk: line 5: 3071 Segmentation fault (core dumped) LD_LIBRARY_PATH="${VALVE_LIB_DIR}:${LD_LIBRARY_PATH}" "${VPK_LINUX}" "${1}"
Я не уверен, что происходит, так как яЯ все еще изучаю оболочку по мере того, как я пишу код, зная, что LD_LIBRARY_PATH
, возможно, бесконечный цикл, но что может заставить этот файл работать намного лучше, чем его текущее состояние?
Я прошу прощения за вопросесли это звучит странно, как я впервые спрашиваю здесь.