Uma explicação plausível para a diferença de comportamento é que os comandos que funcionam e não funcionam estão carregando bibliotecas diferentes porque possuem configurações diferentes para o caminho de pesquisa da biblioteca LD_LIBRARY_PATH
. Existem outras variáveis de ambiente que podem ser importantes, mas são menos prováveis, como LD_PRELOAD
, PATH
(se ./Logic
for um script que depende de alguns executáveis - mas a mensagem de erro não for consistente com isso), etc.
Uma explicação plausível do motivo pelo qual invocar o comando de uma instância interativa do bash não funciona, mas invocar o comando diretamente de sudo
works é que você está configurando esse ambiente em .bashrc
, o arquivo que instâncias interativas de bash é executado. A execução de sudo
limpa quase todas as variáveis de ambiente, portanto sudo ./Logic
works; mas sudo bash
seguido por ./Logic
não funciona porque executar bash
define essas variáveis novamente.
Você deve definir variáveis de ambiente em .profile
(que é executado quando a sessão é iniciada ), não em .bashrc
. Seus sintomas são característicos de um dos problemas com variáveis variáveis de ambiente em .bashrc
.
A configuração para LD_LIBRARY_PATH
provavelmente não deve estar presente em seus arquivos de configuração. Adicionar um diretório em que as bibliotecas do sistema de sombras provavelmente seja uma fonte de incompatibilidades. Se você precisar executar um programa específico, defina LD_LIBRARY_PATH
somente ao executar esse programa (por meio de um invólucro de shell, se quiser automatizá-lo), não o defina globalmente.