mintty: como manter minha saída visível após o término dos processos?

0

Eu tenho um atalho na área de trabalho que inicia um script bash do cygwin e quero que o terminal do mintty permaneça aberto depois que meu script terminar para que eu possa ver sua saída. Para este propósito, estou usando a opção -h always mintty [1].

A janela permanece aberta, mas a saída é desfeita pela menta assim que meu script termina (!!!). Parece uma piada de mau gosto. Estou esquecendo de algo? Eu verifiquei esse comportamento mesmo com um script de uma linha com apenas um eco.

Nota [1] -h é descrito assim na página man:

-h, --hold never|start|error|always

Determine whether to keep the terminal window open when the command has finished and no more processes are connected to the terminal. 
    
por ndemou 26.10.2017 / 15:04

2 respostas

0

No meu caso, o problema foi encontrado em /etc/bash.bash_logout que estava rodando / usr / bin / clear no logout por razões de privacidade (eu estava rodando o meu script com bash --login então na terminação ele fez um logout). Após a resposta útil de Michael Chu (obrigado novamente) eu encontrei a resposta no processo de preenchimento de um bug (primeiro passo antes de preencher realmente é para ver se ele já foi reportado). Estou colando a parte relevante da resposta no relatório de erros existente no link :

>  Hmm, the screen clearing is done by the latest /etc/bash.bash_logout:

# when leaving the console clear the screen to increase privacy   if
[ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear ] && /usr/bin/clear   
fi
    
por 27.10.2017 / 15:24
2

Executei alguns testes e a opção -h always mintty funcionou conforme o esperado; a tela não foi apagada e a janela ficou aberta.

Aqui está o atalho exato "Destino" que usei para executar um script:

C:\cygwin64\bin\mintty.exe -h always /usr/bin/bash -l ~/helloworld.bash

Estou usando o mintty 2.7.7 (x86_64-pc-cygwin).

Espero que a atualização do mintty e / ou a utilização da sintaxe mostrada acima conserte as coisas para você. Se não, você poderia forçar uma pausa dentro do próprio script adicionando um comando read da seguinte forma:

echo 'Script end.  Press ENTER to close'
read
    
por 27.10.2017 / 05:22

Tags