🐚

【VScode】bash: sail: command not foundが出た時の対処法

2025/02/19に公開

MacのVScodeでsail up -dしたら、こんなエラーが…

bash: sail: command not found

これは「Sailコマンドが見つからない」という意味です。

Laravel Sailをインストールし、/Users/name/project-name/vendor/bin/sailにきちんとsailファイルが存在するのにコマンドが見つからない場合はVScodeのログインシェルを変更する必要があります。

VScodeで.bashrcを自動で読み込む設定を追加

Macはデフォルトのシェルがzshのため.bashrcはVSCodeのターミナル起動時に自動で読み込まれないことがあるようです。
VSCodeを開いたら.bashrcの設定が自動で読み込まれるよう変更しましょう。

  1. .bash_profile を開く
    nano ~/.bash_profile
    
  2. 以下の内容を追加(または修正)
    if [ -f ~/.bashrc ]; then
     source ~/.bashrc
    fi
    
  3. 保存して閉じる(CTRL + X → Y → Enter)
  4. 設定を反映
    source ~/.bash_profile
    
  5. VSCode を再起動→新しいターミナルでsail up -d動くか確認

補足

自分の場合、nano ~/.bash_profileしたら以下の2行だけ入っていました。

eval "$(/opt/homebrew/bin/brew shellenv)"
export PATH="/Applications/MAMP/bin/php/php8.3.14/bin:$PATH"

この状態はHomebrewの設定とMAMPのPHPパス設定だけがあるだけなので、.bashrcを自動で読み込む設定を追加しました。

なぜ.bashrcが自動で読み込まれなかったのか

Macのログインシェルとインタラクティブシェルは、設定ファイルの読み込み方が異なるためです。
VScodeのターミナルはログインシェル(.bash_profile)を使用して起動します。せっかく作ったbashrcを読み込んでいないので、aliasが適用されずエラーが発生していました。
そのため、.bash_profilesource ~/.bashrcを追加して.bashrcの設定も読み込むように変更しました。

おまけ:シェルとは

コンピュータに命令を伝えるための窓口を指します。
コンピュータの核であるカーネルを守る、貝殻(シェル)のような役割をするためシェルと呼ぶそうです。

ふだんターミナルからコマンド入力でフォルダ移動をしたり、一覧を表示したりできるのもシェルが人間の命令をコンピュータにつなげてくれているおかげです。

ls #ファイル一覧を表示
cd test #testフォルダに移動
mkdir hoge #hogeというフォルダを作成

ゲームでいうところのコントローラーの役割をしているのがシェルで、シェルがいるおかげでジャンプやダッシュができます。

Discussion