Стандартная среда для экрана является/bin/sh, когда это должен быть/bin/bash?

Я пытаюсь вызвать программу для работы запуска в/etc/rc.local, который выполняет две команды:

  1. Запустите отдельное экранное использование screen -dmS name
  2. Отправьте команду в то экранное использование screen -S name -X stuff command

Однако команда полагается на экологический набор variablesbeing. Я установил эти команды ЭКСПОРТА и в корне .profile и в корне .pam_environment файл. Для ссылки они:

export PATH=$PATH:/usr/local/cuda-7.0/bin

export LD_LIBRARY_PATH=:/usr/local/cuda-7.0/lib64

Однако запущенный экран не видит эти переменные и ошибки с error while loading shared libraries: libcudart.so.7.0: cannot open shared object file: No such file or directory - который является тем, что я ожидал бы, не были ли эти переменные установлены.

Проблема, я не могу выяснить, почему они не установлены. Мое лучшее предположение - то, что по некоторым причинам экран использует /bin/sh (который является тем, о чем это сообщает если я echo $0, тогда как оболочка корня по умолчанию /bin/bash

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

Какая-либо идея, что вызывает это и как зафиксировать? Я использую Ubuntu 14.04 LTS.

1
задан 14 January 2016 в 19:55

1 ответ

Возможно, Ваш $SHELL не установлен или установлен на /bin/sh? Или у Вас есть a shell набор к /bin/sh в Вашем .screenrc файл?

Посмотрите screenдокументация:

-s program

устанавливает оболочку по умолчанию на указанную программу, вместо значения в переменной среды $SHELL (или /bin/sh если не определенный). Это может также быть определено через shell .screenrc команда. См. также там.

И там:

shell command

Установите команду, которая будет использоваться для создания новой оболочки. Это переопределяет значение переменной среды $SHELL. Это полезно, если требуется выполнить tty-усилитель, который ожидает выполнять программу, указанную в $SHELL. Если команда начинается с a - символ, оболочка будет запущена как оболочка входа в систему. Типичные оболочки делают только минимальную инициализацию при отсутствии запуска как оболочка входа в систему. Например, Bash не считает Ваш ~/.bashrc если это не оболочка входа в систему.

5
ответ дан 3 December 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: