```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]] を読み込んでいないので両者に違いが出る。思い込みが強いとハマる。