【VScode】bash: sail: command not foundが出た時の対処法
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
の設定が自動で読み込まれるよう変更しましょう。
- .bash_profile を開く
nano ~/.bash_profile
- 以下の内容を追加(または修正)
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
- 保存して閉じる(CTRL + X → Y → Enter)
- 設定を反映
source ~/.bash_profile
- 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_profile
にsource ~/.bashrc
を追加して.bashrc
の設定も読み込むように変更しました。
おまけ:シェルとは
コンピュータに命令を伝えるための窓口を指します。
コンピュータの核であるカーネルを守る、貝殻(シェル)のような役割をするためシェルと呼ぶそうです。
ふだんターミナルからコマンド入力でフォルダ移動をしたり、一覧を表示したりできるのもシェルが人間の命令をコンピュータにつなげてくれているおかげです。
ls #ファイル一覧を表示
cd test #testフォルダに移動
mkdir hoge #hogeというフォルダを作成
ゲームでいうところのコントローラーの役割をしているのがシェルで、シェルがいるおかげでジャンプやダッシュができます。
Discussion