回答編集履歴

1

パスの通し方の解説

2021/08/26 06:41

投稿

miyabi-sun
miyabi-sun

スコア21194

test CHANGED
@@ -37,3 +37,97 @@
37
37
  環境変数NODE_PATHに値を突っ込まないとグローバルインストールしたモジュールがrequireに失敗する等の罠がある
38
38
 
39
39
  [nodebrewのNODE_PATHを設定する奴](https://qiita.com/miyabisun/items/6742364edacb5b04d4c1)
40
+
41
+
42
+
43
+ ---
44
+
45
+
46
+
47
+ さてさて、CLIツールの使い方のお話です。
48
+
49
+
50
+
51
+ > `zsh: command not found: nodenv`
52
+
53
+
54
+
55
+ シェルにはルールがあり、
56
+
57
+ これがどういう理屈でコマンドが存在しない判定になるのか
58
+
59
+ 何をすればコマンドとして認識されるのかにルールがあります。
60
+
61
+
62
+
63
+ ```bash
64
+
65
+ $ echo $PATH
66
+
67
+ /home/miyabi/.local/bin:/usr/bin:/sbin:/bin
68
+
69
+ ```
70
+
71
+
72
+
73
+ 環境変数の`$PATH`を表示すると
74
+
75
+ こんな風にコロン区切りのディレクトリパスの文字列がずらずらと表示されます。
76
+
77
+
78
+
79
+ シェルで何かしらのコマンドを実行すると、
80
+
81
+ この左のディレクトリから「同名の実行ファイルはありますか?」と探していき、
82
+
83
+ ヒットしたらそのファイルを実行します。
84
+
85
+
86
+
87
+ 最後まで見つからなければ`zsh: command not found: nodenv`です。
88
+
89
+ なので実行ファイルをコマンドとして認識してもらうには2通りのアプローチがあります。
90
+
91
+
92
+
93
+ - 環境変数`$PATH`を拡張して、認識させたい実行ファイルが存在するディレクトリを含めるようにする
94
+
95
+ - 環境変数`$PATH`に記述してあるいずれかのディレクトリに、認識させたい実行ファイルを移動させる
96
+
97
+
98
+
99
+ 今回の質問文のケースは前者が主となるでしょう。
100
+
101
+ bashやzshならば`export PATH=$PATH:追加したいコマンド検索パス`といったコマンドを発行することで
102
+
103
+ 環境変数`$PATH`を拡張させて新しいディレクトリを認識させる事ができるようになります。
104
+
105
+
106
+
107
+ しかし、これはターミナルソフトを閉じると効果が失われます。
108
+
109
+ ターミナルソフトを立ち上げてzshの世界に触れたタイミングで毎回`export PATH=$PATH:追加したいコマンド検索パス`を実行しなければなりません。
110
+
111
+
112
+
113
+ それをやってくれるのが
114
+
115
+ `.zshrc`や`.bashrc`です。
116
+
117
+ 利用しているシェルはzshのようなので`.zshrc`のファイルの末尾に
118
+
119
+ `export PATH=$PATH:追加したいコマンド検索パス`を追加してください。
120
+
121
+ するとターミナルソフトを立ち上げる度にこのコマンドを入力してくれてコマンドが使えるようになります。
122
+
123
+
124
+
125
+ この辺の一連の流れを「パスを通す」と呼びます。
126
+
127
+ 恐らく参考にした記事の冒頭とかに書いてあるかと思いますし、
128
+
129
+ 書いて無ければ「こんなこと知ってるでしょ?」体だと思います。
130
+
131
+ この辺、公式サイトのドキュメントは結構丁寧に教えてくれたりするので
132
+
133
+ 出来れば公式サイトのドキュメントを読んで欲しいところですね。