Por que meu $ LD_LIBRARY_PATH fica indefinido ao usar a tela com o bash?

6

Isso está relacionado a Por que meu LD_LIBRARY_PATH é exibido? terminal de inicialização não definido? , mas um conjunto diferente de sintomas.

Primeiro, /usr/bin/screen é setuid de acordo com a outra questão. Segundo, o shell padrão neste sistema é /bin/tcsh por várias razões históricas, e não temos permissão para chsh para /bin/bash , então normalmente executo o bash manualmente imediatamente após o login. Em terceiro lugar, eu quase sempre uso tela, mas eu quero ctrl-ctrl-c na tela para criar um novo bash "tab", então eu sempre invoco o bash primeiro.

Isto é:

{~} $ echo $SHELL
/bin/tcsh
{~} $ bash
[~] echo $SHELL
/bin/bash
[~] screen -U
[~]

... e quando se reconectar:

{~} $ echo $SHELL
/bin/tcsh
{~} $ screen -dUr
[~] echo $SHELL
/bin/bash
[~] 

No entanto, meu $LD_LIBRARY_PATH está lá no tcsh, lá no bash, mas vazio uma vez eu corro a tela; ainda está presente se eu apenas executar a tela do tcsh, mas depois eu recebo novas "abas" do tcsh quando uso ctrl-a ctrl-c na tela.

Alguma idéia?

    
por UltraNurd 16.06.2010 / 23:41

2 respostas

7

Como a tela é setuid, ela desativa LD_LIBRARY_PATH . Quando seu shell é tcsh, a inicialização do tcsh (de .tcshrc , suponho, já que a tela não é padronizada para criar shells de login) define LD_LIBRARY_PATH novamente. Se você quiser que LD_LIBRARY_PATH seja definido em suas janelas de tela bash, defina-o em .bashrc .

    
por 17.06.2010 / 01:45
0

A maioria das pessoas define seu $ PATH e $ LD_LIBRARY_PATH em .bash_profile ou .bashrc, achando que ambos são iguais, mas isso não é verdade. Uma é para "verdadeiros invólucros" e uma para "invólucros remotos" é a minha compreensão dela (nunca consigo lembrar qual é qual). Basicamente, dependendo de como você se loga (ssh, terminal de desktop, screen, w / e), um é executado ou o outro. Se você tiver suas variáveis configuradas em uma, mas não na outra, considere fazer uma ligação simbólica à outra ou torná-la uma única linha:

echo "source .bashrc" > .bash_profile

* supondo que você use .bashrc agora; caso contrário:

echo "source .bash_profile" > .bashrc

para que suas variáveis sejam definidas, não importa como você faça login.

    
por 16.06.2010 / 23:56