AppleScriptのランタイム環境が何であるかを区別できるようになりました。
それらのうち、/usr/bin/osascriptを呼び出しているランタイム環境について、さらに細分化して個別に識別するために、ランタイム環境そのものと親プロセスが何であるかをAppleScriptで調査してみました。
結論からいえば、親プロセスが「bash」ならTerminalからosascriptコマンドで起動されたと判断してよさそう。その他は、実行されたScriptの置かれているパスを求めて、macOS標準装備のScript Menuかアプリケーション内部のScript Menuかを見分けるぐらいでしょうか。
これを判定したプログラム自体は、別に技術的にすごいとか機密の塊とかいうことはなくて、「清書してなくて、きたない。無駄に長い。掲載されているプログラムを見ても何も感じない」ことから掲載していません。実験用のテストプログラムでも、ちょっと近年稀に見るぐらいひどい出来です。内容は、単にランタイムプログラムのプロセスIDを取得して、そのプロセスIDをもとにpsコマンドで親プロセスを求めて、コマンドからいろいろ情報を抜いてくるというだけのものです。
Script Menu
ランタイムのパラメータ:/usr/bin/osascript -P /Users/me/Library/Scripts/Finder/pTEST.scptd 親プロセス:/System/Library/Frameworks/Foundation.framework/Versions/C/XPCServices/com.apple.foundation.UserScriptService.xpc/Contents/MacOS/com.apple.foundation.UserScriptService
与えられているScriptが特定フォルダ(/Users/me/Library/Scripts/)以下にあるものかどうか、という識別は可能。ちょっと、根拠が弱そうです。
CotEditor内のScript Menu
ランタイムのパラメータ:/usr/bin/osascript -sd -T 14534 -P /Users/me/Library/Application Scripts/com.coteditor.CotEditor/010)M-pM^_M^MM^NM-pM^_M^SM^\AppleScriptM-cM^AM-(M-cM^AM^WM-cM^AM-&M-hM-'M-#M-iM^GM^H/0020)M-pM^_M^SM^\M-fM-'M^KM-fM^VM^GM-gM-"M-:M-hM-*M^MM-cM^AM^WM-cM^AM-&M-eM-.M^_M-hM-!M^LM-cM^AM^WM-cM^@M^AM-pM^_M^SM^DM-fM^VM-0M-hM-&M^OM-fM^[M-8M-iM-!M^^M-cM^AM-+M-gM-5M^PM-fM^^M^\M-cM^BM^RM-eM^GM-:M-eM^JM^[.@r.scpt 親プロセス:/System/Library/Frameworks/Foundation.framework/Versions/C/XPCServices/com.apple.foundation.UserScriptService.xpc/Contents/MacOS/com.apple.foundation.UserScriptService
親プロセスはScript Menuと同じですが、こちらも実行しているScriptのパスが/Users/me/Library/Application Scripts/com.coteditor.CotEditor/以下であること。これも、識別のための根拠が弱いです。
Terminal経由でosascriptコマンド実行
ランタイムのパラメータ:osascript /Users/me/Desktop/pTEST.scptd 親プロセス:-bash
これは、親プロセスが-bashであることから、明確に区別できます。Terminal.appではなくbashなんですね。
Terminal経由で/usr/bin/osascript(フルパス指定)でコマンド実行
ランタイムのパラメータ:/usr/bin/osascript /Users/me/Desktop/pTEST.scptd 親プロセス:-bash
フルパスで指定すると何か変わってくるかとも思いましたが、とくに変化はありませんでした。
Program | AS Style | runtime name | Parent Process Name | Script Path |
Script Editor | Script/Scriptd | Script Editor | ||
Script Editor | Cocoa-AppleScript Applet | CocoaApplet | ||
Script Editor | Applet | applet | ||
Script Debugger | Script/Scriptd | Script Debugger | ||
Script Debugger | Applet (Enhanced) | FancyDroplet | ||
ASOBjC Explorer 4 | Script/Scriptd | ASOBjC Explorer 4 | ||
Automator | Workflow | Automator | ||
Automator | Applet | Application Stub | ||
Script Menu | Script/Scriptd | osascript | …com.apple.foundation.UserScriptService | /Users/me/Library/Scripts/ ほか |
CotEditor | Script | osascript | …com.apple.foundation.UserScriptService | /Users/me/Library/Application Scripts/com.coteditor.CotEditor/ |
Terminal.app (osascript) | Script/Scriptd | osascript | bash |