【问题标题】:How to make Jupyter Terminal fully functional?如何使 Jupyter 终端功能齐全?
【发布时间】:2026-01-09 22:40:01
【问题描述】:

Jupyter Lab 应用程序具有漂亮的Terminas 和浏览器内终端外壳,支持颜色、导航键和终端应用程序的几乎所有标准功能。在这个问题中,我的意思是 /lab 应用程序,而不是经典的 Notebook (/tree) 应用程序。

如果我使用this Docker 映像启动 Jupyter 服务器,它会很好用。我需要建立自己的形象,最好不要以此为基础。我只是按照记录来做:

docker run -it --rm -p 8888:8888 -v "$PWD":/jupyter python:3.8 bash
# pip install jupyterlab
# jupyter lab --config=/jupyter/jupyter_notebook_config.py

以上假设我在当前目录中有一个jupyter_notebook_config.py

c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = 8888
c.NotebookApp.password = 'sha1:<salt>:<hash>'
c.NotebookApp.allow_password_change = False
c.NotebookApp.allow_root = True
c.NotebookApp.open_browser = False

一切正常,但终端性能很差,它不支持颜色和发送代码(如^[[A^[[B)而不是箭头键。 Dockerfile 的逐行调查并不是那么令人兴奋的努力,也许有人可以指出我在错过什么?

编辑:我对颜色有点错误(被jupyter/base-notebook 图像中的默认绿色提示弄糊涂了)和整体问题描述。根本原因是在我的镜像中启动的shell是sh,而在官方镜像中它是bash。但尽管如此,终端并没有完全发挥作用,例如如果我启动 nano,它只会在 80x25 字符区域开始,并且不会拉伸到终端的实际大小)。箭头在 nano 中工作。

【问题讨论】:

    标签: docker jupyter-notebook jupyter jupyter-lab jupyter-console


    【解决方案1】:

    所以我找到了原因。显然,终端网络应用程序只是复制了运行 Jupyter 的用户的默认 shell 的行为。在这张图片中,他们在 .bashrc 模板中启用着色,然后创建一个新用户,为他指定一个 shell(行 5259)。

    编辑: 还必须在环境中设置 SHELL=/bin/bash

    【讨论】: