无法从终端通过导入的库执行vpk_linux32的shell脚本

时间:2019-02-10 08:03:05

标签: linux shell 64-bit

我正在创建一个名为vpk.sh的外壳文件,它将帮助我将文件夹(使用从here复制的代码)转换为vpk file,并接受参数;这样使用起来就不会那么困难了。第一个外壳文件是:

#!/bin/bash
DIR=$(dirname "${BASH_SOURCE[0]}")
export LD_LIBRARY_PATH=$(cd "$DIR" && pwd)
exec "$DIR/vpk_linux32" "${@}"

是因为它被保存在本地目录中,因为当从终端和任何位置执行时,它可以与.../vpk.sh "example.vpk"命令一起正常工作。唯一的小问题是该文件夹将被命名为example.而不是example

我遇到的这个shell代码的问题是全局的而不是本地的,我一直在试图自己解决这个问题,但无济于事,将其保存到/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}"

但是,当我尝试执行一个名为example的vpk文件(给出example.vpk)时,就像终端中的vpk "example.vpk"一样,它将开始将vpk文件提取到一个提取了其内容的文件夹,但最终仅提取它找到的第一个文件,例如cfg/autoexec.cfg,但该文件为空而不是其内容,然后立即停止运行,并在以下之后立即输出错误: / p>

/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可能是一个无限循环,所以我不确定正在发生什么,因为我仍在学习shell程序,但是有什么可能使此文件比它做得更好?当前状态?

对于这个听起来令人困惑的问题,我深表歉意,因为这是我第一次在这里提问。

0 个答案:

没有答案