WindowsのあのフォルダはUNIX/Linuxで言えばあそこだ

  • 846
    いいね
  • 25
    コメント
この記事は最終更新日から1年以上が経過しています。

日頃Windows使っててたまにUNIX系のレシピ読むと「適当なディレクトリ」という記述を見た瞬間に詰みます。料理できない人が「醤油適量」で死ぬくらいの致死率です。

というわけで日頃Windows使ってる人なりにディレクトリの対応表をまとめました。FHSの正確な定義よりはざっくりこんな使われ方だから近いよねで分類しています。
また、UNIX/LinuxのパッケージマネージャにWindowsで相当するのはソフトのインストーラではなく、機能・役割の有効化だと解釈しています。

Windows 働き UNIX
レジストリ Windowsのシステム設定・各種ソフトウェアの動作設定はレジストリに保存するのが一般的だが、UNIX系ではソフトウェアごとのテキストベース設定ファイルに保存するのが一般的。 /etc
C:\Windows\System32\drivers\etc WindowsにもUNIX由来の設定ファイルがあるのでそれ用のディレクトリ…といってもほとんどの開発者にとってはhosts格納専用でしょう。 /etc
C:\Windows コマンド。/binは一般ユーザ用で/sbinは管理用。/usr配下のはこれらの別名のことが多いが、独立していてオプショナルなコマンドを格納している構成もある。ここをいじっていいのはパッケージマネージャだけ。 /bin, /sbin, /usr/bin, /usr/sbin
C:\Windows\System32 共有ライブラリ。ここをいじっていいのはパッケージマネージャだけ。 /lib
C:\Windows\System32\drivers ドライバ。UNIX系ではカーネルモジュールの一種としてドライバを位置づける。 /lib/modules/【OSバージョン】
C:\Program Files\Common Files ユーザがインストールした共有ライブラリ /usr/local/lib
C:\Program Files ユーザがインストールしたプログラム。ディレクトリを作る。 /opt
(該当なし。ユーザーが自分で格納用ディレクトリを作ることが多い) ユーザがインストールしたプログラム。ディレクトリを作らない単体のもの。 /usr/local/bin
C:\Users\【ユーザー名】 ユーザーのホームディレクトリ。UNIXでは管理者だけ/home以下でなく/rootというホームディレクトリを持つ。 /home/【ユーザー名】, /root
(ユーザーの)スタートアップ

とても深いディレクトリ。コマンドshell:startupで開けます。@tukiyo3 さんより
ログイン時に実行されるプログラム。Windowsではショートカットを集めたフォルダだがUNIXではスクリプトファイル。 /home/【ユーザー名】/.bash_profile, .bash_login, .profile
このほか、シェルプログラム起動のたびに実行される .bashrc 。も
(全員の)スタートアップ /etc/profile
コントロール パネル\システム\システムの詳細設定\環境変数 DOS時代はAUTOEXEC.BATで設定していた環境変数をWindowsではコントロールパネルで設定するようになりましたが、UNIXではDOSと同じく起動スクリプトで設定します。
注意点としてUNIXの環境変数はDOS/Windowsのものと違い、明示的にexportしたものしか子プロセスに引き継がれません。
/home/【ユーザー名】/.bash_profile, .bash_login, .profile,
/etc/profile
C:\Users\【ユーザー名】\AppData\Roaming, Local, LocalLow アプリが作るデータディレクトリ。WindowsではAppData以下に作られるが、UNIX系ではホームディレクトリ直下。.config以下に作る場合も。 /home/【ユーザー名】,
/home/【ユーザー名】/.config
C:\ProgramData サービスのデータ・ログ /var
C:\inetpub Webコンテンツ /var/www
C:\Windows\Temp,
C:\Users\【ユーザー名】\AppData\Local\temp
一時ファイル置き場。自動削除はされない。消えてるとしたら誰かがタイマーで消している。 /var/tmp

で、結局「適当なディレクトリ」ってどこのことですかって?
実行ファイル一本のプログラムを展開するなら /usr/local/bin/ 、ディレクトリ構造持ったアプリを展開するなら /opt/ でいいんじゃないすかね。