Eu tenho um script bash que executa um programa que gera arquivos (no diretório atual de onde foi executado) e, em seguida, o script bash os verifica e seus tamanhos.
Quando executo este script no terminal, tudo funciona bem, os arquivos são criados, encontrados e relatados.
O problema é que isso deve ser de fácil utilização e precisa ser clicável para ser executado. O script é executado quando clicado, no entanto, os arquivos não parecem ter sido gerados (talvez estejam em outro lugar?) E, portanto, o relatório falha porque os arquivos não foram encontrados.
Neste script, eu faço um cd ~/path/to/location antes de chamar o programa.
#!/usr/bin/env bash
cd ~/path/to/location
./someprogram
if [ touch output.txt ]; then
echo "FILE EXISTS"
fi
Responder1
Acontece que meu ambiente não foi totalmente copiado usando o SHEBANG
#!usr/bin/env bash
simplesmente definindo e exportando as variáveis de ambiente ausentes no script, o script funcionou bem.
export ENV_VARIABLE_NAME=environment_variable_data
Deve ter sido que a variável não foi definida no ambiente bash (talvez cshrc ou algo assim)
Responder2
Desculpe, aparentemente minha reputação não me permite comentar, embora teria sido mais apropriado, pois estou pedindo que você verifique algo primeiro.
De qualquer forma, minha pergunta é: você está usando o mesmo nome de usuário ao usar o console e a GUI?
Você poderia estar logado como root ao usar o console, enquanto sua GUI seria registrada usando outro nome de usuário, que pode não ter os direitos necessários na pasta na qual você está tentando gravar os arquivos?
Em seguida, você deve garantir que concedeu os direitos necessários ao usuário da GUI (adicionando a conta do usuário a um grupo relevante, por exemplo).
Esse é provavelmente o motivo mais comum para os arquivos não serem gravados onde você espera ao usar o Linux.