每当我尝试设置 EDITOR 环境变量时,后续检查都会显示尚未设置任何值。
我试图编辑 crontab:
sudo crontab -e -u mycooluser
返回:
no crontab for mycooluser - using an empty one
Error opening terminal: unknown.
crontab: "/usr/bin/sensible-editor" exited with status 1
然后我找到了这个帖子: 从命令行设置 cronjob这建议我更改使用的编辑器。
所以我尝试了(包括变体):
export EDITOR="/bin/nano"
export EDITOR="usr/bin/nano"
export EDITOR=nano
当我执行时(根据此链接如何查找并设置 $EDITOR 环境变量?):
echo $EDITOR
或者
printenv | grep EDITOR
我什么也没得到,快速printenv
检查也确认EDITOR
列表中不存在变量。需要明确的是,“什么也没有”是指echo $EDITOR
它在上面打印一个空行,并且printenv | grep EDITOR
什么也没有打印。
知道为什么没有设置该变量或者为什么我似乎无法更改它吗?
系统:Ubuntu 18.04.1,在Webmin中使用终端
答案1
您正在使用所谓的“弹出外壳”。这不是终端。事实上它也不是真正的贝壳。
它是 WWW 浏览器内的一个用户界面伪造品,将 shell 命令作为单独的事务彼此分开执行。没有实际持续运行的 shell 来保存环境变量。它仅通过 WWW 浏览器中的用户界面以这种方式呈现。 shell 命令在TERM
未设置环境变量的随机数进程环境中以及在没有控制终端的会话中运行。而且即使它是设置后,没有终端模拟器来处理文本编辑器等全屏程序使用的终端 I/O。事实上,仅提供将程序的输出中继回本地机器的功能;没有输入被发送到另一个方向。
nano
、pico
、 并emacs
会抱怨无法确定终端类型并打开终端。 VIM 和 NeoVIM 回退到在这种情况下根本不成立的假设,并给出简单悬挂的外观。即使像ex
和这样的行模式编辑器也无法ed
工作,因为用户输入根本没有发送到远程计算机。 (一个人可能会开车ex
非交互地及其-c
选项。)同样,不能使用该passwd
命令更改密码。
至少从 2016 年开始,这就是对“popup shell”的误解。
进一步阅读
- “杰德梅斯特”(2018-03-04)。 互动终端。错误#1037。真实主题的错误。
- 迈克尔·赫特 (2018-11-13)。打开终端时出错:未知。错误#5214。 Webmin 错误。
- “7starsone”(2016-12-08)。 文件管理器:命令行。错误#566。真实主题的错误。