INDEX
開く ▼

Linux学習:基礎編|デフォルトで使えるLinuxコマンドの実態と`/usr/local/bin/`や`/opt/`等のディレクトリ解説

Learning Linux Basic Default Command F3wvg6hvuy

エンジニアなら普段下記のようなコマンドをCLIでよく使っているかと思います。

$ cd ~/Documents/hoge/
# ディレクトリの移動
$ ls
# 現在のディレクトリの中身を表示
$ find ~/Downloads -name "*tmok*.psd"
# 特定のフォルダ内のファイル検索
$ npm install -g yarn
# npmパッケージマネージャーを使ったインストール
$ brew install node
# macOSやLinuxのソフトウェアをインストールするためのコマンド 

などなど他にも沢山ありますが、普段何気なく使っているこれらのコマンドが、どこにどんな風に管理されているか...その実態を調べていきたいと思います。

コマンドが格納される場所は大きく分けて4種類

① /bin/

システムを動作のための基本的でかつ非常時にも利用できるコマンド。

chmod / rm / mv / mkdir / など

② /usr/bin/

システム管理者や一般ユーザーが使用するコマンドやユーティリティ。/bin/よりも少し広範なコマンドセット

cd / grep / find / sed / など

③ /usr/local/bin/

システム管理以外でインストールした
ソフトウェアやユーザーが手動でインストールした実行バイナリファイルが置かれる。

npm / node / など様々

④ /opt/**

自己完結型の様々なアプリが配置されるディレクトリ。
/bin等のバイナリファイルだけでなく様々な種類のファイルが格納される。

homebrew / など様々

Linux豆知識 214「/bin」「/usr/bin」「/usr/local/bin」ディレクトリの使い分け|Linuc

もちろん他にもありますが、普段よく使っているコマンドの格納場所は大体上記のラインナップです。それぞれ役割や格納場所が異なっていています。

/bin/ディレクトリって何だい

binとはbinary(バイナリの略)で、コマンドの実行ファイル等が設置される場所を示す場合が多いです。試しに/bin/mvの実行ファイルを見てみると...

$ cat /bin/mv
# ����@��`*�__stubs__TEXT^8^�__stub_helper__TEXTt9�t9�__const__TEXTP;:P;__cstring__TEXT�;�;__unwind_info__TEXT�?T�?�__DATA@@@@__nl_symbol_ptr__DATA@.__got__DAT@@/__la_symbol_ptr__DATA(@p(@3__bss__DATA�A H__LINKEDIT����R"��HP��H� x�4@�

...うん、ちょっと見るのは辞めておきましょう。バイナリファイルとは中身がバイナリデータなファイルのことで、人間が見るものではなく、コンピュータが解釈できる形式のファイルになります。

バイナリファイル(英:binary file)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

人間がCLIでcd hogeと打ったとき、コンピュータが何をすれば良いか、コンピュータにとって分かりやすい形式で実行ファイルとして設置されるのが/bin系のディレクトリ。といった解釈で良いかと思います。

「パスを通す」という文脈で理解を深める

実務で躓きがちなのは、「パスを通す」という作業かと思います。ちなみに、詳しい解説と実際にパスを通す流れは下記の記事で説明しています!

Linux学習:基礎編|パス(PATH)を通すとは何ぞや!エンジニアなら避けては通れぬ...

実務でもよくある文脈としては...

nodeのバージョンがインストールした通りのバージョンにならない?一度which nodeでパスの向きを調べて見ましょう。もしかして他の/binディレクトリを見ているかもしれないから、パスを通し直して見ましょう。

みたいな会話でしょう。もう少しそのシチュエーションを細かく定義してみます。

nodeのパスの向きを調整するシチュエーション

【状況】

まず、brew install nodeをすると、homebrewがユーザーが手動でインストールしたパッケージとして/usr/local/bin/にnode実行ファイルを設置してくれます。/usr/local/bin/の役割通りの動きですね。

そして、nodenvの方は独自の管理方法をとっていて、nodenvでnodeのバージョン管理をしたいなら、パスは~/.nodenv/shims/に向いていないといけません。

このように、/usr/local/bin/でも/opt/**配下でもなく、独自に実行ファイルを管理しているパターンもあって、大概こういう時に「パスの向きが違う問題」は起きます。

解決方法

下記のようにしてやれば、そのシェルのコンテキストだけは解決するかと思います。

export PATH="$HOME/.nodenv/shims/:$PATH"

exportで環境変数PATHを上書きしていて、コマンド探索の時に先頭から順に見ていくので、上記で一旦はnodenvの方を向きます。

ただ、正しいセットアップ方法はnodenv|GitHubドキュメントを参照しましょう。ちゃんと解決するためには~/.zshrc~/.bash_profile等に下記の記述があった方が良いです。

eval "$(nodenv init -)"

nodenvはinitという実行で、パスの向きを設定したり、他にセットアップに必要な作業を自動でやってくれます。多分このコマンドを実行していないせいで、環境変数PATHにnodenvのパスが通っていないのだと思います。

まとめ

Linuxのコマンドは基本的には、/bin/, /usr/bin/, /usr/local/bin/等で実行ファイル(バイナリファイル形式)として管理されます。ただ、手動インストールしたものによってはその管理方法は様々で、場合によっては「パスの向きを変える」「パスを通す」必要が出てきます。

基本的なコマンドの設置場所を理解した上で、困ったときは柔軟に対処すると良いでしょう。

Linux学習:基礎編|パス(PATH)を通すとは何ぞや!エンジニアなら避けては通れぬ...

References

スキルアップ転職を目指すなら「エンジニア特化型転職エージェント」を活用しよう

もし下記のような悩みがあれば、スキルアップを目的とした転職をするのもひとつの手段です。

・モダンな環境での経験が積みたい...
・実際に働いてみてもっと取り組みたい案件が明確になった
・学習をしているが先が見えずこのまま1人でスキルアップするのは辛い...
・今の職場ではなかなか理想の案件にアサインしてもらえない...

レバテックキャリアやユニゾンキャリアといったエンジニアに特化した転職エージェントであれば、初回面談でまずは現状の悩みを聞いてくれたり丁寧にヒアリングをしてくれます。

さらに、プロのキャリアアドバイザーが企業個別の技術質問・頻出質問の対策、模擬面接でのサポート、ES対策、企業分析・自己分析、求人の紹介など、あなたの転職を徹底サポートしてくれて...下記のどの状況の人でもメリットがあるので、まだ使っていない人は無料相談から進めておきましょう。

シチュエーション メリット
既に採用面接を控えている人 模擬面接や面接企業の分析をしてくれる
応募先企業の固有の
質問を気にしている人
応募先企業の頻出質問や気にしていることなど、企業ごとの対策をしてくれる
応募企業がまだ少ない人 応募したい企業をヒアリングしてくれ、ベストな求人をピックアップしてくれる
転職に自信がない人 転職理由や希望条件をヒアリングの上、ベストな応募企業や採用面接のコツをレクチャーしてくれる

IT・Web業界のエンジニア転職に強いエージェントがおすすめ。筆者や同僚も実際に活用していたエージェントをまとめておきます。

現役がおすすめするIT・Webエンジニア特化型の転職エージェント

IT・WEB・ソーシャルゲーム業界への転職ならGEEKLY
The Service Aid Your Career.
ボタンをクリックして無料の転職相談から始めよう!
IT・Web業界での転職なら【レバテックキャリア】
The Service Aid Your Career.
ボタンをクリックして無料の転職相談から始めよう!
IT・Web・ゲーム業界特化の転職エージェント【ユニゾンキャリア】
The Service Aid Your Career.
ボタンをクリックして無料の転職相談から始めよう!
ITエンジニア就職に特化した【ウズカレIT】
The Service Aid Your Career.
未経験ITエンジニアの就職サポートに特化したサービスに無料相談しよう!