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à.
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.