GNU/Linux >> Znalost Linux >  >> Ubuntu

Došlo k chybě při vytváření podřízeného procesu pro tento terminál?

Používám Ubuntu od verze 10.04 a zjistil jsem, že je ve srovnání s Windows přátelštější. Právě teď používám ‚Precise 12.04‘. Vytvořil jsem mnoho vlastních spouštěčů pro bash skripty a až do včerejška jsem neměl žádný problém.

Nainstaloval jsem softwarovou sadu, která má více spustitelných souborů. Hlavní spustitelný soubor abaqus se nachází v optsoftwaresname a je symbolickým odkazem na spustitelný soubor abq610i v /opt/softwaresname/executables/ .

Hlavní exe abaqus vyžaduje některé argumenty příkazového řádku. Používám argument cae , (tj. abaqus cae ), ale s jiným příkazem pro vykreslení grafiky v lepším režimu, takže konečné volání je:
XLIB_SKIP_ARGB_VISUALS=1 abaqus cae

Vytvořil jsem alias pro tento dlouhý příkaz v .bash_rc soubor jako:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

Všechno fungovalo perfektně, protože alias spouští software. Protože jsem líný šampion, napadlo mě pro to vytvořit odpalovací zařízení v Káhiře. Zadal jsem tedy abaquscae v poli „příkaz ke spuštění po kliknutí“ a zaškrtněte „Spustit v terminálu“. K mému zděšení se však po kliknutí na spouštěč zobrazila chyba::

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

Následně jsem napsal malý soubor bash skriptu „abaquscae.sh“:

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

a uložil, udělal to spustitelným a po spuštění v bash shellu jsem znovu dostal podobnou chybu, tj. :

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

Teď jsem úplně ztracený, vyzkoušel jsem mnoho triků, např.
1- odstranění čárek ve skriptu bash,
2- vytvoření dos2unix ,
3- pomocí úplné cesty ke spustitelnému souboru
ale tento skript neběží přes bash terminál.

PROBLÉM:

Příkaz (stejně jako jeho alias) funguje v bash terminálu dobře, ale když jsou spuštěny přes nějaký jiný kanál (např. skripty/spouštěče), terminál je žalostně nedokáže rozpoznat 🙁 ..

Pokud má nějaký odborník radu/informaci o tom, jak tento problém vyřešit, podělte se. Budu vám velmi vděčný.

Přijatá odpověď:

Myslím, že skript by měl být takto:

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

Spouštěč můžete také vytvořit pomocí následujícího příkazu:

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

Nastavení proměnných prostředí před názvem spustitelného souboru v příkazovém řádku je funkcí shellů CLI (Command Line Interface). Pokud vložíte VARIABLE=value /path/to/executable ve spouštěči se program, který načte spouštěč (a efektivně spustí spustitelný soubor), pokusí najít soubor s názvem „VARIABLE=value“ a samozřejmě selže.

Související:spouštěcí skripty pro Unity Desktop?

Tento příkaz spustí bash , výchozí uživatelský shell v Ubuntu, a řekněte mu, aby se spustil (-c option) řetězec „XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae“, takže bude interpretován tak, jako když to zadáte do CLI.


Ubuntu
  1. Jsou terminálové barevné únikové sekvence definovány kdekoli pro Bash?

  2. Seznam všech možných konfiguračních možností pro Lightdm?

  3. Odstranili právě nastavení pozadí pro terminál?

  1. Existuje instalační program Wubi pro verzi Ubuntu Dvd?

  2. Existují plány pro plynulé rolování v celém systému?

  3. Jaké jsou alternativy ke správci sítě pro bezdrátové sítě?

  1. Průvodce linuxovým terminálem pro začátečníky

  2. Soubor .desktop. Došlo k chybě při spouštění aplikace?

  3. Existuje způsob, jak změnit proměnné prostředí jiného procesu v Unixu?