为什么脚本打包为.app与直接作为.sh运行时会有不同的功能



脚本检查是否安装了自制程序,并将结果输出到桌面上的文本文件中。出于调试目的,我在桌面上输出了一个文本文件。

这是脚本:

#! /usr/bin/env bash
cd ~/Desktop
(command -v brew >/dev/null 2>&1 ||  echo >&2 "Installing Homebrew Now") &> result.txt

当我直接从终端运行这个脚本时,它什么也不输出。当我用Appify或Platypus打包脚本,打开包内容并从那里运行脚本(右键单击并点击打开(时,它什么也不输出。这是意料之中的,因为我已经安装了自制软件。每当我双击.app时,它就会输出";立即安装Homebrew";。这是出乎意料的,因为我的电脑上安装了自制软件。

为什么作为.app运行时输出不同?

Appify脚本:

#!/bin/bash
if [ "$1" = "-h" -o "$1" = "--help" -o -z "$1" ]; then cat <<EOF
appify v3.0.1 for Mac OS X - http://mths.be/appify
Creates the simplest possible Mac app from a shell script.
Appify takes a shell script as its first argument:
`basename "$0"` my-script.sh
Note that you cannot rename appified apps. If you want to give your app
a custom name, use the second argument:
`basename "$0"` my-script.sh "My App"
Copyright (c) Thomas Aylott <http://subtlegradient.com/>
Modified by Mathias Bynens <http://mathiasbynens.be/>
EOF
exit; fi
APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"

由于某些原因,$PATH在打包为.app时有所不同。我不得不使用绝对路径进行检查:

command -v /usr/local/bin/bash 

最新更新