Eu tenho este programa que pode ser executado com uma interface de usuário de texto e uma interface de usuário gráfica.
Ele não possui nenhuma opção de linha de comando para forçar um ou outro, mas acho que de alguma forma detecta automaticamente se estamos no X ou não (por exemplo, se eu o executar a partir de um terminal virtual, ele entrará no modo de texto e se eu o executar a partir de um emulador de terminal X abre uma janela gráfica separada).
Eu gostaria de forçá-lo no modo de texto e executá-lo dentro do terminal X. Como eu faria isso?
Normalmente apenas
na linha de comando do terminal. Alguns aplicativos são mais inteligentes do que isso e, na verdade, verificam as permissões e o tipo do console versus o pseudoterminal.
Se você quiser desabilitar o X para um único comando, você pode escrever
Observe o espaço em branco estratégico após
=
. De maneira mais geral, você pode definir variáveis de ambiente para um processo prefixando seu comando com uma sequência<variable>=<value>
separada por espaços. Como o espaço serve como separador,=
imediatamente seguido por um espaço limpa a variável anterior. Podemos observar o efeito desses prefixos usando um subshell como comando e, em seguida, imprimindo seu ambiente. Tome por exemplo:Isso irá imprimir
Isso mostra que o ambiente do subshell realmente é diferente do pretendido. Observe que a substituição do shell acontece antes que os argumentos individuais sejam passados para o
echo
. Isso significa queecho
será chamado com três argumentos e, portanto, há apenas um único espaço entreb
ed
na saída, como se a linha de comando fosseecho a b d
(mesmo que haja dois espaços antesd
de imprimir apenas espaços simples), mas diferenteecho a b "" d
(que imprime dois espaços entreb
ed
).