我正在为 Mac 创建一个应用程序安装程序。安装程序涉及在安装时从用户处获取代码。我在代码输入屏幕中使用了安装程序插件。
我已经阅读(从此链接)并验证插件在命令行和 Apple 远程桌面中不起作用。我可以使用变量("$COMMAND_LINE_INSTALL")检查安装程序是否从命令行运行。
我的问题是,如何以编程方式检查它是否通过 Apple 远程桌面运行?
pstree
可用,您可以快速获取当前进程的祖先,并查看Apple远程桌面是否在其中,例如pstree -p $$
bash。不幸的是,我使用 brew 安装了pstree
,所以除非您自己分发二进制文件,否则您很可能无法使用此功能。
另一种方法是自己走上父母。这是我测试的一个示例,用于检查我是否在 iTerm
内运行(我使用 iTerm
作为示例,因为我不知道在 Apple 远程桌面中运行时pstree
输出会是什么样子)。
pid=$$
running_in_iterm=0
while [ $pid -ne 1 ]; do
command=$(ps -o command= -p $pid)
case "$command" in
*iTerm*)
running_in_iterm=1
break;;
esac
pid=$(ps -o ppid= -p $pid)
done
if [ $running_in_iterm -eq 1 ]; then
echo "Running in iTerm"
else
echo "Not running in iTerm"
fi
您可以尝试从内置Terminal
应用和iTerm
运行此脚本,并查看差异。