![运行“pkexec”时出现错误:“在 /etc/shells 文件中未找到 SHELL 变量的值”](https://linux22.com/image/1132164/%E8%BF%90%E8%A1%8C%E2%80%9Cpkexec%E2%80%9D%E6%97%B6%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%EF%BC%9A%E2%80%9C%E5%9C%A8%20%2Fetc%2Fshells%20%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9C%AA%E6%89%BE%E5%88%B0%20SHELL%20%E5%8F%98%E9%87%8F%E7%9A%84%E5%80%BC%E2%80%9D.png)
pkexec
在 Ubuntu 14.04 上,运行脚本时出现错误“在 /etc/shells 文件中未找到 SHELL 变量的值” 。
最有可能的是,这个错误是在我删除了被设置为默认 shell 的 fish shell 之后开始的。
的内容/etc/shells
为:
# /etc/shells:有效的登录 shell
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
我该如何修复这个问题?
答案1
问题是这样的:pkexec
正在访问$SHELL
以确定使用哪个shell来评估命令的其余部分;由于您卸载了fish但没有执行任何其他操作,$SHELL
仍然包含/usr/bin/fish
,但pkexec
不被视为/usr/bin/fish
有效的shell,因为/usr/bin/fish
已从中删除/etc/shells
。
你需要做以下两件事:
为您的用户设置一个新的 shell,以便下次加载环境时
$SHELL
将包含有效 shell 的路径。例如,将 Bash 设置为您的用户的新 shell(替换user
为您的用户名):sudo chsh -s /bin/bash user
注销/登录以重新加载环境,以便
$SHELL
包含用户新 shell 的路径。