Ocorreu um erro ao criar o processo filho para este terminal

1

Estou usando o Ubuntu desde a versão 10.04 e o achei mais amigável em comparação com o Windows. Agora estou usando o Precise 12.04. Eu criei muitos lançadores personalizados para scripts bash e nunca tive nenhum problema até ontem.

Eu instalei um pacote de software que possui vários executáveis. O executável principal abaqus está localizado em \opt\softwaresname e é um link simbólico para o executável abq610i in /opt/softwaresname/executables/ .

O principal exe abaqus requer alguns argumentos de linha de comando. Eu uso o argumento cae , (ou seja, abaqus cae ), mas com outro comando para renderizar os gráficos em um modo melhor, portanto, a chamada final é: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae

Eu criei um alias para esse longo comando no arquivo .bash_rc como:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

Tudo funcionou perfeitamente bem, pois o alias executa o software. Sendo um campeão preguiçoso, pensei em criar um lançador Cairo-dock para isso. Então, eu digitei abaquscae na caixa "comando para iniciar ao clicar" e selecione "Executar em um terminal". No entanto, para meu espanto, ao clicar no lançador deu um erro ::

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

Consequentemente, escrevi um pequeno arquivo de script bash "abaquscae.sh":

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

e salvo, tornou-o executável e, ao executá-lo no shell bash, recebi novamente o erro semelhante, ou seja:

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

Agora estou totalmente perdido, tentei muitos truques, por exemplo,
1- removendo vírgulas no script bash,
2- tornando dos2unix ,
3- usando caminho completo para o executável
mas esse script não está sendo executado no terminal bash.

PROBLEMA:

O comando (assim como seu alias) funciona bem no terminal bash, no entanto, quando eles são executados através de algum outro canal (por exemplo, scripts / launchers), o terminal falha em não reconhecê-los :( ..

Se algum especialista tiver conselhos / informações sobre como resolver este problema, por favor, compartilhe. Eu serei muito grato.

    
por Admiral 08.03.2013 / 14:33

1 resposta

1

Acho que o script deve ser assim:

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

Você também pode criar o lançador usando o seguinte comando:

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

A definição de variáveis de ambiente antes do nome do arquivo executável em uma linha de comando é um recurso dos shells CLI (Command Line Interface). Se você colocar VARIABLE=value /path/to/executable em um ativador, o programa que ler o ativador (e efetivamente iniciar o executável) tentará localizar um arquivo chamado "VARIABLE = value" e, é claro, falhará.

Esse comando inicia bash , o shell de usuário padrão no Ubuntu, e diz para executar (a opção -c ) a string "XLIB_SKIP_ARGB_VISUALS = 1 / opt / softwaresname / abaqus cae", então ele será interpretado como é quando você digita isso no CLI.

    
por Eric Carvalho 08.03.2013 / 17:12