有时候我们需要在脚本中得到当前登录的用户名,为此我在bing.com上查询了一下类似的文章,得到了很多启发,也发现了一些问题,下面一一说明:
1. 通过查询管理数据库,取第一条记录进行裁剪得到
getent passwd `who` | head -n 1 | cut -d : -f 1
使用用户trustr登录系统,执行命令,看起来是没问题的。但我们不要关闭这个终端,另外用一个用户ubuntu从远程终端登录系统,再执行该脚本,效果如下:
大家可以看到,返回的仍然是trustr,而不是ubuntu。
2.使用users命令
可以使用users命令来得到当前登录的全部用户,例如:
大家可以看到,目前该系统登录了三个用户,如果要取一个怎么办呢?可以用一行简单的脚本,取第一个,
#!/bin/bash
aa=$(users)
bb=${aa%% *}
echo $bb
取最后一个
#!/bin/bash
aa=$(users)
dd=${aa##* }
echo $dd
test.sh代码如下:
#!/bin/bash
aa=$(users)
echo get first one
bb=${aa%% *}
echo $bb
echo get last one
dd=${aa##* }
echo $dd
重要说明:使用users命令时,可以列出所有登录的用户名,但这个顺序并不是想当然的是登录先后顺序!!!,而是字母顺序。上例中,aaa用户其实是最后登录的。