Tengo un script bash que ejecuta un programa que genera archivos (en el directorio actual desde el que se ejecutó), luego el script bash los verifica y sus tamaños.
Cuando ejecuto este script desde la terminal, todo funciona bien, los archivos se crean, se encuentran y se informa sobre ellos.
El problema es que se supone que esto es fácil de usar y es necesario hacer clic para ejecutarlo. El script se ejecuta cuando se hace clic, sin embargo, los archivos no parecen generarse (¿quizás estén en otro lugar?) y, por lo tanto, el informe falla porque no se encuentran los archivos.
En este script, hago un cd ~/path/to/location antes de llamar al programa.
#!/usr/bin/env bash
cd ~/path/to/location
./someprogram
if [ touch output.txt ]; then
echo "FILE EXISTS"
fi
Respuesta1
Resulta que mi entorno no se copió completamente usando SHEBANG
#!usr/bin/env bash
simplemente definiendo y exportando las variables de entorno faltantes en el script, el script funcionó bien.
export ENV_VARIABLE_NAME=environment_variable_data
Debe haber sido que la variable no estaba definida en el entorno bash (tal vez cshrc o algo así)
Respuesta2
Lo siento, aparentemente mi reputación no me permite comentar, aunque hubiera sido más apropiado ya que te pido que compruebes algo primero.
De todos modos, mi pregunta es: ¿estás usando el mismo nombre de usuario cuando usas la consola y la GUI?
Podría haber iniciado sesión como root cuando usó la consola, mientras que su GUI se habría iniciado con otro nombre de usuario, que podría no tener los derechos necesarios en la carpeta en la que está intentando escribir los archivos.
Luego debe asegurarse de haber otorgado los derechos necesarios al usuario de la GUI (por ejemplo, agregando la cuenta de usuario a un grupo relevante).
Esa es probablemente la razón más común por la que los archivos no se escriben donde se esperaba cuando se usa Linux.