2012/03/31

うちのホームディレクトリ構成を少し晒す

みんなのホームディレクトリ下の構成を教えてください - まめめも」を見たので、うちの$HOMEの構造を白日の下に晒し上げる事にしようと思った次第です。

UNIX(系OS)はSolarisから始まり、FreeBSD, OpenBSD, MacOS X, 仕事でLinuxを使いますが、概ねどこでも同じような$HOMEの構成にしています。

最初の頃は環境が変わるたびにディレクトリ名変えたり、再構成したり、いろいろ試行錯誤していましたが、最終的には$HOME以下もファイルシステム階層標準(Filesystem Hierarchy Standard)に従ってディレクトリを作るようにしています。


ファイルシステム階層標準(Filesystem Hierarchy Standard)

ファイルシステム階層標準(Filesystem Hierarchy Standard)はUNIX系OSでディレクトリ名とその内容を標準化しようってもので、Filesystem Hierarchy StandardでPDFが手に入ります。$HOMEはあれこれディレクトリ名や構成を試行錯誤した結果、一番上の階層はこれに従って作ったほうが楽と思って現在に至ります。

$HOME/FHSに従ったディレクトリ

% ls -F1 ~ | grep '^[a-z]'⏎
bin/
localrepos/
share/
tmp/
usr/
var/

~/bin

自分で書いたスクリプトとかコンパイルしたバイナリとか投げ込んでます。環境変数$PATHの一番最初に入れてよく使うコマンド置き場として使っています。

~/localrepos

gitのリポジトリ用においています。FHSには定義されていないディレクトリですが、以前~/var/localreposにしていたのをよく出入するので一番上に持ってきました。この中にはgit pushするホスト名のディレクトリを掘って、その中にコードのリポジトリをおいています。例えばbouncehammerなら、~/localrepos/うちのサーバホスト名/bouncehammer/ってなってます。また、githubからcloneしたやつは~/localrepos/github.com/cloneしたやつ/って感じです。

~/share

% ls -F1 ~/share/dot-files/⏎
dot.Xresources
dot.exrc
dot.gitconfig
dot.google-macvim-gvimrc
dot.google-macvim-vimrc
dot.kermitrc
dot.mykermrc
dot.procmailrc
dot.tcsh-alias.darwin
dot.tcsh-complete
dot.tcshrc
dot.xinitrc

~/.*で無くなると困るものはshare/dot-filesに実体をおいて、シンボリックリンクを作っています。
%  ls -laF ~/ | grep '^l' | awk '{print $9,$10,$11}'⏎
.exrc@ -> share/dot-files/dot.exrc
.gitconfig@ -> share/dot-files/dot.gitconfig
.gvimrc@ -> share/dot-files/dot.google-macvim-gvimrc
.kermitrc@ -> share/dot-files/dot.kermitrc
.mykermitrc@ -> share/dot-files/dot.mykermrc
.tcshrc@ -> share/dot-files/dot.tcshrc
.texmf@ -> share/texmf
.vimrc@ -> share/dot-files/dot.google-macvim-vimrc
以前は~/etcにおいているものもありましたが、~/shareに纏めました。~/etcをやめた理由は忘れました。ファイルは全部gitリポジトリに入れています。

~/shareは本棚的なイメージ
~/share/hosts-and-usersにはssh,lftp,ping,telnet等ネットワーク系コマンドで引数に入れるホスト名とかユーザ名の一覧を、個人用、会社用、お客さん用にわけて入れています。それらを~/share/dot-files/dot.tcsh-completeで補完対象としてシェル変数に入れてログイン時に読み込むようにしています。

あとは資料作成で使うアイコンとか画像は~/share/graphics, ~/share/iconsに、LaTeX用スタイルとかマクロは~/share/texmfに、Terminal.appの設定をExportしたファイルは~/share/terminalに、Vimのプラグインとかは~/share/vimにそれぞれ配置しています。

~/tmp

物置です。再起動しても消えませんが、~/Makefileをおいていて、cd ~ && make cleanで掃除をしています、たまに。

~/usr

この中にlocal/src, local/httpdとかあって、どっかから取ってきたソフトウェアのコンパイル場所、インストール先として使ってます。Macでは実験的に使ってみるものはここという位置づけで、常に使う定番のソフトウェアは/usr/local/srcでコンパイルして/usr/local/*に投げ込んでます。

~/var

これも/varと同じ用に変化の多いファイル置き場にしています。
% ls -1F ~/var/spool⏎
adium/
chrome/
firefox/
safari/
skype/
ブラウザでダウンロードしたファイル置き場、IMで受け取ったファイル置き場として~/var/spoolを使っています。Macに最初からある~/Downloadsは大文字で始まるし、指が~/varまで入力するのに慣れているし、等の理由でvar/使ってます。

~/varの中には他に~/var/tmp(もう一つの物置、滅多に掃除しない), ~/var/backups/vim(Vimのバックアップファイル用), ~/var/archive(よく使うソフトウェアのアーカイブ置き場)があります。

Macに最初からあるディレクトリ

~/Documents
最初からあるディレクトリでよく使う~/Documentsは~/docsとしてシンボリックリンクを張っています。MacBook Airに引っ越した時にCase sensitiveにするのを忘れていたので、cd ~/documents/でも移動できるのですが、先頭が大文字Dでシェルが補完してくれないので~/docs → ~/Documentsとしてリンクしています。これで小文字dから始まるのはdocsだけなので、~/Documentsへの出入りが快適になります。

~/Documentsの中は、これもどうやってファイルを分類するか試行錯誤していましたが、何年か前から、その書類を必要としているところのドメイン名なディレクトリに投げ込むという方法に落ち着きました。

例えばKansai.pm用に作った発表資料は~/docs/kansai.pm.org/slidesに、Kyoto.pm用なら~/docs/kyoto.pm.org/slidesに、bounceHammerのCVSワーキングコピーは~/docs/bouncehammer.jp/workingcopyに入れています。ディレクトリ名に使うドメイン名が存在するかどうかは気にせず、です。

~/Desktop

~/Documentsは~/docsで~/d[TAB]で補完されて快適ですが、同じく物置化している~/Desktopは~/var/desktopとしてリンクを張っています。Case Insensitiveなので~/desktopは作れませんし、適当な省略形も使いたくないし、連想できない名前でリンクをしても忘れそうなので~/var/desktopにしています。

~/Dropbox

これもDから始まるディレクトリで、~/Desktopと同様にターミナルからはそれほど出入しないので~/var/dropboxとしてリンクしています。

~/.ssh

この記事書いていて思い出したというか気がついたのですが、~/.sshは~/etc/sshとか作ってリンク張って、ちゃんと管理したほうがいいかなぁと思いました。僕も整理整頓が下手くそというか、実際の机もいろんなものが散らばっているので、$HOMEの中もそれなりです。


0 件のコメント:

コメントを投稿