LoginSignup
7
5

More than 5 years have passed since last update.

環境変数についてよく分かってなかったのでまとめる@Gitbush on Windows

Last updated at Posted at 2018-02-10

Linuxコマンドは実は・・・

Linuxコマンド、たとえばpwdを打ってみる

https://gyazo.com/db7a4b0805d2bf2d5d6b1bbccdadecc8

これはあたりまえ。
では、which pwdを打ってみる

https://gyazo.com/d012b13c21e191af2a11d8183afe07d8

これは一体?何?
そうなんです。
pwdは実は/usr/bin/pwdを実行しているのです。

ためしに/usr/bin/pwdを打ってみます。

https://gyazo.com/c034388cdacae3f85a2eb841a6bc124c

予想通りです。
念のため、/usr/binディレクトリも覗いてみましょう。
cd /usr/binを打ってみます。

https://gyazo.com/023b6e06e973f5708c0e03bd93ecec71

大量ですが右下の方にありましたね。
ただ、pwd.exeです。

本来は/usr/bin/pwd.exeと打つべきなはずです。
一旦/usr/bin/pwd.exeと打ってみます。

https://gyazo.com/74ee93bf33656e3ec3adc554bd76ae72

予想通りです。

つまりpwdの本当の姿は/usr/bin/pwd.exeなのです。

なぜ省略できるのか?

printenv PATHEXTコマンドを打ってみましょう。
これは変数PATHEXTに登録されているもの一覧を表示するコマンドです。

https://gyazo.com/31de165b1530ff9931300a3eb339e4ef

この一覧で出てきた;で区切られた拡張子11個は省略してもよい拡張子として登録されているのです。

printenv PATHコマンドを打ってみましょう。
これは変数PATHに登録されているもの一覧を表示するコマンドです。

https://gyazo.com/8e0a167ec28399db2f927dc090d01fa0

大量に出てきましたが、この一覧で出てきた:で区切られたディレクトリ以下の実行ファイル(〇〇〇.exeみたいなやつ)は、ディレクトリ部分を省略できるのです。

なので、/usr/bin/pwd.exepwdに省略することができるのです。

PATHの追加とか削除は?

では当然、PATHPATHEXTへの追加登録や削除したくなってきますよね。

その方法を説明します。
どうせなら今流行り?のMecabでやってみましょう。

1. MeCabのダウンロード

https://github.com/ikegami-yukino/mecab/releases/tag/v0.996mecab-0.996-64.exeをダウンロードして実行します。

2. mecabコマンドを試す

/c/'Program Files'/以下にmecabがインストールされます。
※各PCにより異なるケースがあります。

そしてMeCab実行ファイルのmecab.exe/c/'Program Files'/mecab/bin/以下にあります。
つまり/c/'Program Files'/mecab/bin/mecab.exeだと実行可能なはず。
そして.exeは省略可なので/c/'Program Files (x86)'/mecab/bin/mecabだと実行可能なはず。

$ /c/'Program Files (x86)'/mecab/bin/mecab
ちゃうちゃうちゃうんちゃう?
 ち      動詞,自立,*,*,五段・ラ行,体言接続特殊2,ちる,チ,チ
 ゃうちゃうちゃうんちゃう        名詞,一般,*,*,*,*,*
 ?      記号,一般,*,*,*,*,?,?,?
 EOS

予想通り!
でもmecabだと反応しません。

$ mecab
bash: mecab: command not found

3. ~/.bashrcに登録したい変数の命令文を書き込む

まずは~/.bashrcを作りましょう。
touch ~/.bashrcですね。

$ touch ~/.bashrc

中身見てみましょう。もちろん何も書かれていません。

$ cat ~/.bashrc

では書き込みましょう。

$ echo 'export PATH="$PATH:/c/'Program Files'/mecab/bin"' >> ~/.bashrc
$ echo 'alias mecab="mecab.exe"' >> ~/.bashrc

echo '書き込みたい文字列' >> 書き込みたいファイルです。
export PATH="$PATH:の後ろに登録したいパスを続けます。
$PATHは現状のPATHです。

念のためちゃんと書き込まれているか確認しましょう。

$ cat ~/.bashrc
export PATH="$PATH:/c/'Program Files'/mecab/bin"

大丈夫そうです。

4. ~/.bashrcを実行してPATHに登録する

まだ~/.bashrcに書き込んだだけです。
printenv PATHコマンドを打ってみましょう。登録されていないことが確認できます。
printenv PATHコマンド実行結果は省略します。私のPCには、はずかしPATHが多量に含まれているため。

~/.bashrcを実行しましょう。

$ source ~/.bashrc

するとprintenv PATHコマンドで新たにPATHが増えていることが確認できます。

5. mecabコマンドを試してみる。

PATHが追加登録されたのでmecabで実行可能なはずです。
やってみましょう。

$ mecab
ちゃうちゃうちゃうんちゃう?
 ち      動詞,自立,*,*,五段・ラ行,体言接続特殊2,ちる,チ,チ
 ゃうちゃうちゃうんちゃう        名詞,一般,*,*,*,*,*
 ?      記号,一般,*,*,*,*,?,?,?
 EOS

いけました!

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5