【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