UnityでShell scriptを使ってなにがしかを実行したいことってありますよね。
いろいろ試してみてこれが良さそうだとなったものを記録しておきます。

Unity起動時にズバババっと処理されるように、InitializeOnLoadにしてあります。

[InitializeOnLoad]
public class Startup
{
    static readonly string shPath =
        Application.dataPath + "/Hoge.sh";

    static Startup()
    {
#if UNITY_EDITOR_OSX
        StartExecForMac();
#endif
        AssetDatabase.Refresh();
    }

    static void StartExecForMac()
    {
        var p = new Process();
        p.StartInfo.FileName = "/bin/zsh";
        p.StartInfo.Arguments = $"-c \"zsh {shPath}\" ";
        p.StartInfo.Verb = "RunAs";
        p.StartInfo.UseShellExecute = true;
        p.Start();
        p.WaitForExit();
    }
}