```console
open -na Ghostty --args -e zsh -lic '<コマンド>'
```
コマンドと引数定義は以下のとおり。
- `open`
- `-a <app>` 指定したアプリケーションで開く
- `-n` 新しいインスタンスで開く (既に起動しているものがあっても)
- `--args <command>` 以降のコマンドを指定アプリケーションの引数として扱う
- `Ghostty` [^1]
- `-e <command>` 以降のコマンドを[[Ghostty]]起動後のコマンドとして実行する
- `zsh`
- `-l` [[ログインシェル]]として起動する
- `-i` [[インタラクティブシェル]]として起動する
- `-c` 最初の引数をコマンドとして実行する
[^1]: [ghostty(1) — Arch manual pages](https://man.archlinux.org/man/extra/ghostty/ghostty.1.en?utm_source=chatgpt.com)
## zshコマンド別トラブル
`zsh` のシェル起動モードによって上手くいかないので注意。
> [[Zsh起動時にスクリプトを読み込む順番]]
`yazi` コマンドの場合で説明。
### `zsh -ci`
`yazi` コマンドが見つからないエラーとなる。
`-i` オプションでは[[インタラクティブシェル]]として起動するので [[zshrc|.zshrc]] が読み込まれる。しかし、[[zprofile|.zprofile]] は読み込まれないので、以下のような記述があった場合は有効にならない。
`~/.zprofile`
```bash
eval $(/opt/homebrew/bin/brew shellenv)
```
[[Homebrew]]がアクティベートされないので、[[Homebrew]]でインストールしたコマンドは認識しない。よって、[[Homebrew]]でインストールした場合は `yazi` が解決しない。
### `zsh -cl`
`yazi` コマンドで[[Yazi]]は起動するが、ファイルを選択した時に[[Neovim]]ではなく[[Vim]]が起動する。
`-l` オプションでは[[ログインシェル]]として起動するので [[zprofile|.zprofile]] が読み込まれる。しかし、[[zshrc|.zshrc]] は読み込まれない。よって、[[mise]]がアクティベートされなかったり、環境変数や初期化処理が実行されていないことになる。
`~/.zshrc`
```bash
# ------------------------
# .zshrcに書かれた内容の一例
# ------------------------
eval "$(~/.local/bin/mise activate zsh)"
source ~/.starship.sh
alias vim=nvim
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
source ~/.zoxide.sh
source ~/.eza.sh
source ~/.fzf.sh
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/.zshrc_base.sh
source <(fzf --zsh)
export PATH=/opt/homebrew/Cellar/unzip/6.0_8/bin:$PATH
alias vimj='nvim -c \"set filetype=json\"'
alias vimj='nvim -c "set filetype=json"'
alias vimm='nvim -c "set filetype=markdown"'
export MY_MAC_TAG=macbook_pro_home
export EDITOR=nvim
source ~/.yazi.sh
```
ここでは環境変数 `EDITOR=nvim` が設定されていないことにより、[[Yazi]]がエディタとして[[Neovim]]を扱わないため[[Vim]]が起動する。
> [!hint]
> [[Bash]]の場合は [[bash_profile|.bash_profile]] で [[bashrc|.bashrc]] を読み込んでいることが多く、[[ログインシェル]]と[[インタラクティブシェル]]のどちらで起動しても、操作者からするとほぼ同じ体験を得られることが多い。しかし、[[macOS]]の[[Zsh]]では [[zprofile|.zprofile]] で [[zshrc|.zshrc]] を読み込んでいないので両者に違いが出る。思い込みが強いとハマる。