vimdiff: シンボリックリンクを使ってオプション付きのコマンドを渡す方法
$ file `which vimdiff /usr/bin/vimdiff: symbolic link to `vim'
なのですが,もちろん
$ vim tmp0 tmp1 $ vimdiff tmp0 tmp1
の2つは動作が変わります.
これはどんな風に実装してるんでしょう...
lnコマンドのドキュメントにはそういったことは書いていませんし,
googleで検索かけてみても出てきませんでした.
ちなみに,
vimdiffはvim -dOと同じコマンド結果になります.
また,
vimdiff -dOはvimdiffそのものと同じコマンド結果になります.
さらに,
vimdiff -o はvim -do は同じコマンド結果になります.
つまり,
vimdiffにはvimに最初から-dOオプションが付いたのと変わらないようです.
とここまで書いて思い当たる方法があったので試してみました.
int main(int argc, char *argv[]) { printf("program name: %s\n", argv[0]); return 0; }
というコードを書いてコンパイル後,
$ ln -s ./a.out foo $ ./a.out program name: ./a.out $ ./foo program name: ./foo
おおー!
なるほど.多分こうやって実装しているのかもしれませんね.