我正在编写一个.sh脚本,在某些时候,会将用户的shell更改为/ bin/zsh.该命令当然如下:
chsh -s /bin/zsh
Run Code Online (Sandbox Code Playgroud)
但是这会询问用户的密码,我想只在当前用户的shell尚未执行时才执行它/bin/zsh.为此,我需要一个让我知道当前shell的命令,并将其与"/bin/zsh"类似的东西进行比较.我发现有ac getusershell函数,但是有没有办法从shell脚本中知道这个?
更新:对不起,我指的是用户指定为他首选shell的shell.所以,是的,指定的那个/etc/passwd.这背后的逻辑是,脚本即将将用户首选的shell更改为zsh,我只想让脚本首先检查它是否已经是zsh.
Dan*_*iel 15
$SHELL 返回当前用户的shell:
$ echo $SHELL
/bin/zsh
Run Code Online (Sandbox Code Playgroud)
您不应该假设/etc/passwd是存储用户外壳的位置。
我会用这个:
getent passwd $(id -un) | awk -F : '{print $NF}'
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,getent 仅在基于 Solaris、BSD 和 GNU/Linux 的操作系统上实现。
AIX、HP-UX 和 OS X 有自己的方法来做类似的事情(分别是lsusers -c,pwget -n和dscl ...),所以如果需要支持这些操作系统,应该增强这个命令。
| 归档时间: |
|
| 查看次数: |
15177 次 |
| 最近记录: |