GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Si è verificato un errore durante la creazione del processo figlio per questo terminale?

Sto usando Ubuntu dalla versione 10.04 e l'ho trovato più amichevole rispetto a Windows. In questo momento sto usando "Precise 12.04". Ho creato molti lanciatori personalizzati per gli script bash e non ho mai avuto problemi fino a ieri.

Ho installato una suite di software che ha più eseguibili. Il principale eseguibile abaqus si trova in optsoftwaresname ed è un collegamento simbolico all'eseguibile abq610i in /opt/softwaresname/executables/ .

L'exe principale abaqus richiede alcuni argomenti della riga di comando. Uso l'argomento cae , (cioè abaqus cae ) ma con un altro comando per rendere la grafica in una modalità migliore, quindi la chiamata finale è:
XLIB_SKIP_ARGB_VISUALS=1 abaqus cae

Ho creato un alias per questo lungo comando in .bash_rc archiviare come:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

Tutto ha funzionato perfettamente, poiché l'alias esegue il software. Essendo un campione pigro, ho pensato di creare un lanciatore Cairo-dock per questo. Quindi ho inserito abaquscae nella casella "comando per avviare al clic" e selezionato "Esegui in un terminale". Tuttavia, con mio sgomento, dopo aver fatto clic sul programma di avvio ha dato un errore::

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

Di conseguenza ho scritto un piccolo file di script bash "abaquscae.sh":

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

e salvato, l'ho reso eseguibile e dopo averlo eseguito nella shell bash ho ricevuto di nuovo l'errore simile, ad es. :

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

Ora sono completamente perso, ho provato molti trucchi ad es.
1- rimuovere le virgole nello script bash,
2- renderlo dos2unix ,
3- utilizzando il percorso completo dell'eseguibile
ma questo script non è in esecuzione tramite il terminale bash.

PROBLEMA:

Il comando (così come il suo alias) funzionano bene nel terminale bash, tuttavia quando vengono eseguiti attraverso qualche altro canale (ad es. script/launcher) il terminale miseramente non li riconosce 🙁 ..

Se qualche esperto ha consigli/informazioni su come risolvere questo problema, per favore condividi. Ti sarò molto grato.

Risposta accettata:

Penso che lo script dovrebbe essere così:

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

Puoi anche creare il programma di avvio usando il seguente comando:

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

L'impostazione delle variabili di ambiente prima del nome del file eseguibile in una riga di comando è una caratteristica delle shell CLI (Command Line Interface). Se metti VARIABLE=value /path/to/executable in un programma di avvio, il programma che legge il programma di avvio (e avvia effettivamente l'eseguibile) cercherà di trovare un file denominato "VARIABILE=valore" e, ovviamente, fallirà.

Correlati:gli script di avvio per Unity Desktop?

Quel comando lancia bash , la shell utente predefinita in Ubuntu e digli di eseguire (il -c opzione) la stringa "XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae", quindi verrà interpretata come quando la digiti nella CLI.


Ubuntu
  1. Una guida al terminale Linux per principianti

  2. Verificare il processo se lo stesso è in esecuzione?

  3. Le sequenze di escape del colore terminale sono definite ovunque per Bash?

  4. Come trovare l'ID di processo (pid) di un programma terminale in esecuzione?

  5. Soluzione per l'errore di avvio di Ubuntu "Nessuna partizione del genere"

Elenco di tutte le possibili opzioni di configurazione per Lightdm?

Hanno appena rimosso le impostazioni di sfondo per il terminale?

Client torrent per la riga di comando??

File .desktop. Si è verificato un errore durante l'avvio dell'applicazione?

Google Authenticator per il desktop?

Il ciclo Bash FOR spiegato e semplificato