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/)$//'`

こんな具合に加工してやれば、ちゃんとユーザ名だけ取れる。急場しのぎに作ったスクリプトなので、いまいちウツクシクナイのはご容赦いただきたい。