Я использую 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, однако, когда они запускаются через какой-то другой канал (например, скрипты / средства запуска), Терминал с треском не может их распознать :( ..
Если у любого эксперта есть совет / информация о том, как решить эту проблему, пожалуйста, поделитесь. Я буду очень благодарен.
Я думаю, что сценарий должен быть таким:
#!/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.
Для меня я использовал #!/bin/bash/
вместо #!/bin/bash
(имел дополнительное /
в конце). Жалоба была очень похожа, но сказана, "дочерний процесс не каталог". Настолько полезный.