psql: команда не найдена при запуске bash-скрипта в eclipse - PullRequest
0 голосов
/ 12 ноября 2018

Я пишу Java-метод для запуска локального сценария bash с использованием Eclipse. Код показывает как показано ниже:

public static void setUp() throws IOException, InterruptedException {
        Runtime rt = Runtime.getRuntime();
        Process p;
        String filePath = new File("").getAbsolutePath();
        filePath = filePath.concat("/path/to/the/script");
        String command = String.format("sh %s/setUp.sh", filePath);
        System.out.println(command);
        try {
            p = rt.exec(command);
            final int errorValue = p.waitFor();
            if (errorValue != 0) {
                System.out.println("error detected!");
                InputStream error = p.getErrorStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(error));
                String line = "";
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                }
                p.destroy();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

И файл bash очень прост:

#!/bin/bash
#create a local db and import some data
createdb -U dummy -O dummy -h localhost dbname
psql -h localhost -d dbname --file $1

Проблема

line 4: createdb: command not found
line 5: psql: command not found

Я могу запустить скрипт в терминале и скопировать строки 4 и 5 в терминале, а также запустить команду mvn exec в терминале, чтобы запустить метод. Все работает.

Единственное, что не работает, это то, что оно было выполнено в затмении.

Я открыт для любых мнений или советов, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 12 ноября 2018

Я подозреваю, что для Runtime, который используется для выполнения скрипта, пути не будут установлены правильно. Попробуйте использовать полные пути для команд в сценарии, и посмотрите, работает ли это (вы можете найти полные пути, запустив which createdb и which psql в терминале).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...