为什么脚本打包为 .app 与 运行 直接打包为 .sh 时功能不同?
Why would a script function differently when packaged as a .app versus run directly as a .sh?
该脚本检查是否安装了 homebrew,并将结果输出到桌面上的文本文件。为了调试目的,我输出到桌面上的文本文件。
这是脚本:
#! /usr/bin/env bash
cd ~/Desktop
(command -v brew >/dev/null 2>&1 || echo >&2 "Installing Homebrew Now") &> result.txt
当我直接从终端 运行 这个脚本时,它什么都不输出。当我用 Appify 或 Platypus 打包脚本并打开包内容并从那里 运行 脚本(通过右键单击并点击打开)时,它什么都不输出。这是预料之中的,因为我已经安装了自制软件。每当我双击 .app 时,它都会输出“Installing Homebrew Now”。这是意外的,因为我的电脑上安装了自制软件。
为什么 运行 作为 .app 时输出不同?
应用脚本:
#!/bin/bash
if [ "" = "-h" -o "" = "--help" -o -z "" ]; 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 "[=12=]"` 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 "[=12=]"` 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 "" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
由于某些原因,打包为 .app 时 $PATH 不同。我必须使用绝对路径进行检查:
command -v /usr/local/bin/bash
该脚本检查是否安装了 homebrew,并将结果输出到桌面上的文本文件。为了调试目的,我输出到桌面上的文本文件。
这是脚本:
#! /usr/bin/env bash
cd ~/Desktop
(command -v brew >/dev/null 2>&1 || echo >&2 "Installing Homebrew Now") &> result.txt
当我直接从终端 运行 这个脚本时,它什么都不输出。当我用 Appify 或 Platypus 打包脚本并打开包内容并从那里 运行 脚本(通过右键单击并点击打开)时,它什么都不输出。这是预料之中的,因为我已经安装了自制软件。每当我双击 .app 时,它都会输出“Installing Homebrew Now”。这是意外的,因为我的电脑上安装了自制软件。
为什么 运行 作为 .app 时输出不同?
应用脚本:
#!/bin/bash
if [ "" = "-h" -o "" = "--help" -o -z "" ]; 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 "[=12=]"` 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 "[=12=]"` 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 "" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
由于某些原因,打包为 .app 时 $PATH 不同。我必须使用绝对路径进行检查:
command -v /usr/local/bin/bash