При создании дочернего процесса для этого терминала произошла ошибка

Я использую Ubuntu начиная с версии 10.04 и считаю ее более дружественной по сравнению с Windows. Прямо сейчас я использую «Precise 12.04». Я создал много пользовательских модулей запуска для скриптов bash, и у меня никогда не было проблем до вчерашнего дня.

Я установил программный пакет с несколькими исполняемыми файлами. Основной исполняемый файл abaqus находится в \opt\softwaresname и является символической ссылкой на исполняемый файл abq610i в /opt/softwaresname/executables/.

Основной exe abaqus требует некоторых аргументов командной строки. Я использую аргумент cae, (то есть abaqus cae), но с другой командой, чтобы визуализировать графику в лучшем режиме, поэтому последний вызов: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae

Я сделал псевдоним для этой длинной команды в файле .bash_rc как:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

Все отлично работало, так как псевдоним запускает программное обеспечение. Будучи ленивым чемпионом, я подумал о создании для этого каирского дока. Поэтому я ввел abaquscae в поле «Команда запуска по клику» и проверил «Запустить в терминале». Однако, к моему ужасу, при нажатии на панель запуска он выдал ошибку ::

There was an error creating the child process for this terminal
Failed to execute child process "abaquscae" (No such file or directory)

Следовательно, я написал небольшой файл сценария bash "abaquscae.sh":

#!/bin/sh
"XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

и сохранил в , сделал его исполняемым, и после запуска в оболочке bash я снова получил похожую ошибку, а именно:

./abaquscae.sh: 2: ./abaquscae.sh: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae: not found 

Теперь я полностью потерян, я перепробовал много трюков, например
1 - удаление запятых в скрипте bash,
2 - создание его dos2unix,
3 - использование полного пути к исполняемому файлу
, но этот скрипт не выполняется терминал bash.

ПРОБЛЕМА:

Команда (а также ее псевдоним) отлично работают в терминале bash, однако, когда они запускаются через какой-то другой канал (например, скрипты / средства запуска), Терминал с треском не может их распознать :( ..

Если у любого эксперта есть совет / информация о том, как решить эту проблему, пожалуйста, поделитесь. Я буду очень благодарен.

1
задан 8 March 2013 в 19:05

2 ответа

Я думаю, что сценарий должен быть таким:

#!/bin/bash
XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae

Вы также можете создать модуль запуска, используя следующую команду:

bash -c 'XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae'

Установка переменных среды перед именем исполняемого файла в Командная строка - это особенность оболочек интерфейса командной строки. Если вы поместите VARIABLE=value /path/to/executable в модуль запуска, программа, которая читает модуль запуска (и эффективно запускает исполняемый файл), попытается найти файл с именем «VARIABLE = value» и, конечно, потерпит неудачу.

Эта команда запускает bash, пользовательскую оболочку по умолчанию в Ubuntu, и говорит ей выполнить (опция -c) строку «XLIB_SKIP_ARGB_VISUALS = 1 / opt / softwaresname / abaqus cae», поэтому она будет интерпретироваться как это когда вы вводите это в CLI.

0
ответ дан 8 March 2013 в 19:05

Для меня я использовал #!/bin/bash/ вместо #!/bin/bash (имел дополнительное / в конце). Жалоба была очень похожа, но сказана, "дочерний процесс не каталог". Настолько полезный.

0
ответ дан 15 October 2019 в 10:11

Другие вопросы по тегам:

Похожие вопросы: