日頃Windows使っててたまにUNIX系のレシピ読むと「適当なディレクトリ」という記述を見た瞬間に詰みます。料理できない人が「醤油適量」で死ぬくらいの致死率です。
というわけで日頃Windows使ってる人なりにディレクトリの対応表をまとめました。FHSの正確な定義よりはざっくりこんな使われ方だから近いよねで分類しています。
また、UNIX/LinuxのパッケージマネージャにWindowsで相当するのはソフトのインストーラではなく、機能・役割の有効化だと解釈しています。
- 姉妹編つくりました
ファイルのユーザ権限制御・Windows vs UNIX比較
Windows | 働き | UNIX |
---|---|---|
レジストリ | Windowsのシステム設定・各種ソフトウェアの動作設定はレジストリに保存するのが一般的だが、UNIX系ではソフトウェアごとのテキストベース設定ファイルに保存するのが一般的。OS向けの設定は特に /etc/sysconfig に。 | /etc, /etc/sysconfig |
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/ でいいんじゃないすかね。