O ambiente padrão para a tela é / bin / sh quando deveria ser / bin / bash?

0

Estou tentando invocar um programa para ser executado na inicialização em /etc/rc.local que executa dois comandos:

  1. Iniciar uma tela separada usando screen -dmS name
  2. Envie um comando para essa tela usando screen -S name -X stuff command

No entanto, o comando depende de variáveis ambientais estarem definidas. Eu configurei esses comandos EXPORT nos arquivos root .profile e root .pam_environment. Para referência, eles são:

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

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

No entanto, a tela inicial não pode ver essas variáveis e erros com error while loading shared libraries: libcudart.so.7.0: cannot open shared object file: No such file or directory - que é o que eu esperaria se essas variáveis não fossem definidas.

O problema é que não consigo descobrir porque eles não estão definidos. Meu melhor palpite é que, por algum motivo, a tela está usando /bin/sh (que é o que informa se eu echo $0 , enquanto o shell padrão da raiz é /bin/bash

O mais estranho é que isso só acontece para uma tela instanciada como essa na inicialização. Se eu usar o mesmo comando para iniciar uma tela desanexada, tudo funciona corretamente (e usa / bin / bash) sem problemas com variáveis ambientais.

Alguma ideia do que está causando isso e como corrigir? Estou usando Ubuntu 14.04 LTS .

    
por monkeymatrix 14.01.2016 / 16:55

1 resposta

2

Talvez o seu $SHELL não esteja definido ou definido como /bin/sh ? Ou você tem um shell definido como /bin/sh no seu arquivo .screenrc ?

Veja a documentação de screen :

% bl0ck_qu0te%

E lá:

% bl0ck_qu0te%     
por choroba 14.01.2016 / 17:15