Lri*_*Lri 23
以超级用户身份执行交互式 shell 的另一种方法是sudo -s,它$SHELL用作 shell。
正如提到的另一个答案中的评论,su -s /path/to/zsh在 OS X 中不起作用。
OS X 也不支持更改登录 shell /etc/passwd,但您可以使用dscl:
$ dscl . -read /Users/root UserShell
/bin/sh
$ sudo dscl . -change /Users/root UserShell /bin/sh /bin/zsh
$ dscl . -read /Users/root UserShell
/bin/zsh
$ sudo su
My-iMac# echo $0
zsh
My-iMac# exit
$ sudo dscl . -change /Users/root UserShell /bin/zsh /bin/sh
$
Run Code Online (Sandbox Code Playgroud)
/bin/sh在大多数平台上不再是 Bourne shell。它是OS X 中的 bash和 Ubuntu 中的 dash的POSIX 兼容版本。
从su联机帮助页来看,有两种方法可以实现此目的。
第一种方法是简单地使用-sor--shell标志(假设您使用的是基于 *NIX 的操作系统,其版本su支持此参数),后跟您选择的 shell 的路径。如果找不到传递的 shell,su则恢复到以下方法,如果失败,将尝试调用/bin/sh.
例如,您可以强制su启动zsh(假设它存在于/bin/zsh):
sudo su --shell /bin/zsh
Run Code Online (Sandbox Code Playgroud)
第二种方法是修改为用户指定的默认 shell root(小心!)。这可以通过编辑文件/etc/passwd并更改为用户指定的 shell来完成root。要查看默认指定的 shell,可以运行以下命令(假设超级用户是 root):
sudo grep root /etc/passwd
Run Code Online (Sandbox Code Playgroud)
该命令应该输出类似的内容root:x:0:0:root:/root:/bin/bash。您可以简单地更改/bin/bash(或系统中设置的任何内容)来代替zsh。
| 归档时间: |
|
| 查看次数: |
17913 次 |
| 最近记录: |