Normalmente apenas
unset DISPLAY
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 em relação ao pseudoterminal.
Eu tenho este programa que pode ser executado com uma interface de usuário de texto e uma interface gráfica com o usuário.
Ele não tem nenhum comando 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 de um terminal virtual ele entra em seu modo de texto, e se eu executá-lo a partir de um emulador de terminal X, ele abre uma janela gráfica separada).
Eu gostaria de forçá-lo ao modo de texto e executá-lo dentro do terminal X. Como eu faria isso?
Se você quiser desabilitar o X para um único comando, você pode escrever
DISPLAY= ./my_command
Observe o espaço em branco estratégico após = . Mais geralmente, você pode definir variáveis de ambiente para um processo prefixando seu comando com uma sequência de <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. Tomemos por exemplo:
$ A=a B=b C= D=d sh
$ echo $A $B $C $D
Isso imprimirá
a b d
Isso mostra que o ambiente da subcamada é realmente diferente como pretendido. Observe que a substituição de shell acontece antes que os argumentos individuais sejam passados para echo , portanto, há apenas um espaço entre b e d na saída, como se a linha de comando fosse echo a b d (com dois espaços).
Tags x11