$0 の挙動
シェルの $0
は、symlink越しで呼ばれた場合はsymlinkの名前に置き換わる
a.sh
#!/bin/sh
echo `basename $0`
このa.shをPATHの通ったディレクトリに配置し、そのまま実行するとa.sh
と表示される
このスクリプトに対して、同じくPATHの通ったディレクトリへln -s a.sh b
とsymlinkを張り b を実行するとb
と表示される。
これを応用すると諸々のコマンド実行を簡略化する事が出来る
例
ssh USER@server1
というssh接続コマンドをserver1
とサーバー名を入力するだけで実現する。
dossh.sh
#!/bin/sh
ssh USER@`basename $0` $*
$ ln -s dossh.sh server1
dossh.sh にはssh接続コマンドを記述し、サーバー名はbasename $0
で受ける。このスクリプトをPATHが通ったディレクトリに置く。これに対して同じくPATHが通ったディレクトリに サーバー名(=server1)でsymlinkを張る。
これでserver1
と入力するだけでserver1へのssh接続を実行することが出来る。
自分の場合以前は愚直にaliasを個別に切るという事をしていたのだが、この手法の方が管理もスッキリするし、諸々応用も効くのでオススメ