给出两个脚本
foo.sh
bar.sh
在.app包中的 / Contents / Resources 下复制,其中 foo.sh
#!/bin/bash
。 ./bar.sh
echo $ 1
得到错误
没有这样的文件或目录
在脚本尝试源 bar.sh
的行上有没有办法相对引用 bar.sh ?
是否有另一种方法可以在.app?
中捆绑一组bash脚本答案 0 :(得分:2)
你能做的是:
简单示例:
$cat script2
#! /usr/bin/env bash
echo "Hello World, this is script2"
$cat script1
#! /usr/bin/env bash
echo "Hello World from script 1"
echo "Full script path: $BASH_SOURCE"
echo "extracted directory: $(dirname $BASH_SOURCE)"
echo "running script 2"
$(dirname $BASH_SOURCE)/script2 && echo "running script 2 successful" || echo "error running script 2"
echo "sourcing script 2"
source $(dirname $BASH_SOURCE)/script2 && echo "sourcing script 2 successful" || echo "error sourcing script 2"
测试:
$ls /tmp/test
script1 script2
$pwd
/home/michael
$/tmp/test/script1
Hello World from script 1
Full script path: /tmp/test/script1
extracted directory: /tmp/test
running script 2
Hello World, this is script2
running script 2 successful
sourcing script 2
Hello World, this is script2
sourcing script 2 successful
有关详细讨论,请参阅上面的链接...
答案 1 :(得分:0)
还有一个老问题,但要解决最后一部分(反映当前的Apple准则):是的,您绝对应该将所有可执行文件(包括脚本)放置在包的MacOS
子文件夹中:
MacOS -(必填)包含应用程序的独立可执行代码。通常,此目录仅包含一个二进制文件,其中包含应用程序的主入口点和静态链接的代码。但是,您也可以在该目录中放置其他独立的可执行文件(例如命令行工具)。
(来源:Anatomy of a macOS Application Bundle。)
违反这些规则将阻止您成功为Gatekeer(当然还有macOS公证)签署应用程序捆绑包。
第一部分由其他响应适当处理。