У меня есть скрипт bash, который запускает программу, генерирующую файлы (в текущем каталоге, из которого она была запущена), затем скрипт bash проверяет их наличие и их размеры.
Когда я запускаю этот скрипт из терминала, все работает нормально, файлы создаются, находятся и по ним выводятся отчеты.
Проблема в том, что это должно быть простым в использовании и должно быть кликабельным для запуска. Скрипт запускается при щелчке, однако файлы, похоже, не генерируются (может быть, они находятся где-то еще?), и поэтому отчет не выполняется, так как файлы не найдены.
В этом скрипте я делаю cd ~/path/to/location перед вызовом программы.
#!/usr/bin/env bash
cd ~/path/to/location
./someprogram
if [ touch output.txt ]; then
echo "FILE EXISTS"
fi
решение1
Оказывается, моя среда не полностью скопировалась с помощью SHEBANG
#!usr/bin/env bash
просто определив и экспортировав отсутствующие переменные среды в скрипте, скрипт заработал нормально.
export ENV_VARIABLE_NAME=environment_variable_data
Должно быть, переменная не была определена в среде bash (возможно, cshrc или что-то в этом роде)
решение2
Извините, моя репутация, по-видимому, не позволяет мне комментировать, хотя это было бы более уместно, поскольку я прошу вас сначала кое-что проверить.
В любом случае, мой вопрос: используете ли вы одно и то же имя пользователя при использовании консоли и графического интерфейса?
Возможно, при использовании консоли вы вошли в систему как пользователь root, в то время как ваш графический интерфейс был бы зарегистрирован под другим именем пользователя, у которого может не быть необходимых прав в папке, в которую вы пытаетесь записать файлы?
Затем вам следует убедиться, что вы предоставили необходимые права пользователю GUI (например, добавив учетную запись пользователя в соответствующую группу).
Это, пожалуй, самая распространенная причина, по которой файлы не записываются туда, куда вы ожидаете при использовании Linux.