У меня есть скрипт bash, который запускает программу, которая генерирует файлы (в текущий каталог, из которого он был запущен), затем скрипт bash проверяет их и их размеры.

Когда я запускаю этот скрипт из терминала, все работает нормально, файлы создаются, обнаруживаются и сообщаются.

Проблема в том, что он должен быть простым в использовании и должен быть активным. Сценарий запускается при нажатии, однако файлы, похоже, не создаются (может быть, они находятся где-то еще?) и, следовательно, отчет не удалось, так как файлы не найдены.

В этом сценарии я делаю cd ~/path/to/location перед вызовом программы.

#!/usr/bin/env bash
cd ~/path/to/location
./someprogram
if [ touch output.txt ]; then
  echo "FILE EXISTS"
fi

2 ответа2

0

Оказывается, моя среда не полностью копировалась с помощью SHEBANG

#!usr/bin/env bash

просто определяя и экспортируя отсутствующие переменные среды в сценарии, сценарий работал нормально.

export ENV_VARIABLE_NAME=environment_variable_data

Должно быть, переменная не была определена в среде bash (может быть, cshrc или что-то)

-1

Извините, моя репутация явно не позволяет мне комментировать, хотя это было бы более уместно, так как я прошу вас сначала проверить что-то.

В любом случае, мой вопрос: вы используете одно и то же имя пользователя при использовании консоли и графического интерфейса?

Вы могли войти в систему как пользователь root, используя консоль, в то время как ваш графический интерфейс был бы зарегистрирован под другим именем пользователя, у которого могут отсутствовать необходимые права на папку, в которую вы пытаетесь записать файлы?

Затем вы должны убедиться, что вы предоставили необходимые права пользователю графического интерфейса пользователя (например, добавив учетную запись пользователя в соответствующую группу).

Это, вероятно, самая распространенная причина того, что файлы не записываются там, где вы ожидаете их при использовании Linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .