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 的路径。