Solarisで現在のシェルのユーザ名を取得する #solaris #tips
……というキーワードでググると、多分:
who am i
whoami
このようなコマンドを実行せよという記事が引っかかると思う。
けども、どうやらこのコマンドは「現在の」シェルのオーナーではなく、ログインしたときのシェルのオーナーを返すらしい。例えばfooユーザでログインしたあとに:
su bar
who am i
なんてやると返ってくるのは bar ではなくって foo だったりするんである。
それは都合が悪い(現在のシェルのユーザを確実に知りたい)という時はままある。特に実行権限の関係でバカよけしたいときとか。そういうときは:
id
と実行すればいい。現在のシェルのオーナー情報をuid=$userid($user_name)
gid=$groupid($group_name) の形式で返してくれる。
ユーザ名だけが欲しい場合には:
set uid = `id | cut -f1 -d" " | sed -e 's/^uid.*(//' | sed -e 's/)$//'`
こんな具合に加工してやれば、ちゃんとユーザ名だけ取れる。急場しのぎに作ったスクリプトなので、いまいちウツクシクナイのはご容赦いただきたい。