ターミナル上で「laravel」コマンドを使えるようにパスを通す

#はじめに
**環境：**
MacOS

**注意：**
ターミナルで実行するコマンドの先頭にはこんな風に【\$】が記載されています。

```Bash:ターミナル
$ コマンド
```

このは「ターミナルで実行するコマンドだよ！」と知らせるもので、実際に \& も打ち込んで実行するとエラーになるので注意してください。
（私は駆け出しの頃ネットに出てくるコードをコピーしていたので勿論 \$ を打ち込み続け環境構築で挫折しました　笑）

#起こっている問題
Laravelをインストールして、パスを通します。

```Bash:ターミナル
$ export PATH=$HOME/.composer/vendor/bin:$PATH
```

通したパスの変更を反映するため

```Bash:ターミナル
$ source ~/.bash_profile
```

を実行します。
これでパスが反映されて、パスを通した直後は「laravel」コマンドが使えます。
しかし、一度ターミナルを落として「laravel」コマンドを実行すると

```bash:ターミナル
-bash: laravel: command not found
```

と表示され、「laravel」コマンドが使えなくなる問題。

#対処法
まず原因は何かというところを考えました。
ターミナル上でComposerをインストールした後に以下のコードでLaravelをインストール

comporserコマンドの導入と使い方については[こちら]
(https://qiita.com/suke/items/770bccf8a43f9247daf5)

```Bash:ターミナル
 $ composer global require "laravel/installer" --prefer-dist 
```

これでLaravelのインストールが完了しました。
しかし「laravel」コマンドはパスを通さないと使えないのでこちらを実行

```Bash:ターミナル
$ export PATH=$HOME/.composer/vendor/bin:$PATH
```

そしてこのパスを反映させるために

```Bash:ターミナル
$ source ~/.bash_profile
```
これでパスが通って「laravel」コマンドが使えます。
しかし、今回の問題にもあるように、一度ターミナルを落としたら「laravel」コマンドが使えなくなります。

毎回パスを通すのが面倒ですし、どうしたものかと考えました。

**「これってどこでパス管理してんの？？どこにパス保存してんの？？」**と

調べたらこんな記事がありました

https://qiita.com/takutoki/items/021b804b9957fe65e093

「ふむふむ。ターミナル上で使えるコマンドの管理をしているファイルは『.bash_profile』っていうファイルで管理しているのか！」

つまり、『.bash_profile』というファイルでパスを管理しているみたいです。

なのでホームディレクトリで『.bash_profile』を探しました。

探し方は、まず.bash_profileがホームディレクトリ（ディレクトリの親玉みたいなとこ）にいるので、移動する cd コマンドを使ってホームディレクトリに移動しました。

```Bash:ターミナル
$ cd
```

でホームディレクトリに移動して、ホームディレクトリ内でこちらを実行。

```Bash:ターミナル
$ ls -a
```

lsはファイルを探すコマンドです。
.bash_profileは先頭に「.(ピリオド)」が付いる「隠しファイル」なので、普通の状態では見れません。

なので、隠しファイルを見れるようにする -a というオプションをls の後に付けて、隠しファイルも含めた全部のファイルを見ちゃいます。

すると、ターミナル上にザーッとホームディレクトリに入っているファイルやディレクトリが表示されますので「.bash_profile」を探しましょう！

##.bash_profileが無い場合

私はホームディレクトリに.bash_profileがありませんでした。
なので、いくらパスを通してもパスを保存するファイルがありません。
ターミナルを落とすと「laravel」コマンドが使えなくなる原因は恐らくこれ。

なので、まず.bash_profileを作りました。

作り方はホームディレクトリにいる状態で

```Bash:ターミナル
$ touch .bash_profile
```

これで.bash_profileがホームディレクトリに作られました。
作られたか確認してみましょう。

もう一度ホームディレクトリで

```Bash:ターミナル
$ ls -a
```

.bash_profileがあれば成功です！

##パスを通そう

これでパスを.bash_profileに保存できるはずなので、

```Bash:ターミナル
$ export PATH=$HOME/.composer/vendor/bin:$PATH
```

```Bash:ターミナル
$ source ~/.bash_profile
```

を実行。そして.bash_profileを見てみました。
.bash_profileの中身を見るには「vim」というものを使います。
ちょっと特殊なので使い方は[こちら](https://blog.codecamp.jp/vim-command)

```Bash:ターミナル
$ vim ~/.bash_profile
```

ちょっと怪しげなこんな画面になります。
キーボードの「i」をクリックすると入力モードになります。
（画面下に「INSERT」と出たら入力モードです）

vimを終了したい時は「esc」ボタンを押して
「:」「w」「q」を押してエンターを押してください。
これで終了と保存の両方を行うことができます。

このvimで開いた.bash_profileにパスが保存されるのですが、ターミナルを落として再度vimを見ると、綺麗さっぱりパスがなくなってます。（なぜだ）

今回の「laravel」コマンドが使えない問題は、.bash_profileにパスがうまく保存されないのが原因だとここで分かりました。

つまり.bash_profileにパスを保存できれば、ターミナルを落としても「laravel」コマンドが使えるようになるはずです。

なので、
```Bash:ターミナル
$ vim ~/.bash_profile
```

でvimを開いて、「i」を押して入力モードにします。
そして先程打ったパスを.bash_profileに記載します。

```Bash:開いたvim
export PATH=$HOME/.composer/vendor/bin:$PATH
```

これで「esc」ボタンを押して
「:」「w」「q」を押してエンターを押してvimを終了＆保存させます。

その後、.bash_profileにパスを反映させたいので

```Bash:ターミナル
$ source ~/.bash_profile
```

を入力。これで反映＆保存完了です！
これで、ターミナルを落として再度.bash_profileを見ると、先程入力したパスが保存されています。

```Bash:ターミナル
$ laravel -V
```

とすると、無事にLaravelのバージョンが出てきました！

<img width="568" alt="スクリーンショット 2019-07-23 15.58.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467325/1e3537e2-4ce9-b300-7565-0b97bdcfb4b4.png">

これで無事にターミナルを落としても「laravel」コマンドが使えるようになりました!!