Как войти в систему bash с текущим пользователем и файлом .bashr c пользователя в jupyterlab? - PullRequest
2 голосов
/ 05 февраля 2020

У меня есть файл конфигурации в .bashr c, который я хотел бы применить ко всем терминалам, автоматически открываемым в моем jupyterlab.

В настоящее время терминалы jupyterlab запускаются так, без какой-либо конфигурации в моем файле .bashr c.

jupyterlab terminal

Если я просто наберите bash и нажмите ввод, он делает именно то, что я хочу. Как показано ниже.

terminal after typing bash

Я бы хотел, чтобы он автоматически открывался следующим образом.

Как этого достичь?

Вот очень похожий вопрос.

Но ни одно из решений не работает, я имею в виду, что оно открывает bash, а не оболочку, поэтому я не уверен, что это решение это то, что я ищу. Но я изменил настройки торнадо, добавил переменную окружения SHELL = / bin / bash, но ни один из них не имеет никакого влияния. (Я явно перезапускаю jupyterhub каждый раз, чтобы увидеть эффект.

Вот мой стартовый файл jupyterhub 'jupyterhub.service', расположенный в /etc/systemd/'.

[Unit]
Description=Jupyterhub
After=syslog.target network.target
[Service]
User=root
Type=simple
Environment="PATH=/anaconda3/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="SPARK_HOME=/spark-2.3.2-bin-hadoop2.7/"
Environment="SHELL=/bin/bash"
ExecStart=/anaconda3/bin/jupyterhub -f /etc/jupyter/jupyterhub_config.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Вы можете попробовать создать файл

$HOME/.bash_login

и источник .bashrc оттуда

source $HOME/.bashrc

и посмотреть, делает ли он то, что вы хотели.

1 голос
/ 13 февраля 2020

Позвольте мне сделать некоторые дикие предположения о том, что произошло:

1. Проблема конфигурации

Как сказано в одном из комментариев, измените jupyter_notebook_config.py, чтобы включить

c.NotebookApp.terminado_settings = {'shell_command': ['/bin/bash', '--login', '-i']}

shell_command должен быть массивом из трех строк. См. https://github.com/jupyterlab/jupyterlab/issues/4042

2. Ваш идентификатор или ваша оболочка

Проверьте эти сразу после запуска терминала

$ whoami
$ echo $SHELL

, чтобы увидеть, что у вас есть правильный пользователь и правильная оболочка. Если ваш пользователь не прав, он ожидает .bashrc в домашнем каталоге другого пользователя. Если ваша оболочка неверна, например, /bin/sh вместо /bin/bash (которые на самом деле часто являются жесткой связью друг с другом), она не будет читать .bashrc

Если это так, попробуйте увидеть если ваша переменная $SHELL env, как замечено Jupyter, верна. Jupyter должен использовать это, если вы не указали shell_command, как указано выше

3. Jupyter может давать вам неинтерактивную оболочку

Если ваш bash действительно не читает ваш .bashr c, он может быть вызван как неинтерактивная оболочка (я не знаю как) , Для проверки вы можете попробовать выполнить:

$ ls
$ !!

Первая команда ls может быть любой командой. Второй !! должен использовать расширение истории bash, чтобы вызвать последнюю выполненную команду. Если не заменит, если это не интерактивная оболочка.

Я не ожидаю этого и не знаю, как исправить, если это произойдет.

...