GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Beim Erstellen des untergeordneten Prozesses für dieses Terminal ist ein Fehler aufgetreten?

Ich benutze Ubuntu seit der Version 10.04 und fand es im Vergleich zu Windows benutzerfreundlicher. Im Moment verwende ich „Precise 12.04“. Ich habe viele benutzerdefinierte Launcher für Bash-Skripte erstellt und hatte bis gestern nie Probleme.

Ich habe eine Software-Suite installiert, die mehrere ausführbare Dateien enthält. Die ausführbare Hauptdatei abaqus befindet sich in optsoftwaresname und ist ein symbolischer Link auf die ausführbare Datei abq610i in /opt/softwarename/executables/ .

Die Haupt-Exe abaqus erfordert einige Befehlszeilenargumente. Ich verwende das Argument cae , (also abaqus cae ), aber mit einem anderen Befehl, um die Grafik in einem besseren Modus zu rendern, daher lautet der letzte Aufruf:
XLIB_SKIP_ARGB_VISUALS=1 abaqus cae

Ich habe einen Alias ​​für diesen langen Befehl in .bash_rc erstellt Datei als:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

Alles funktionierte einwandfrei, da der Alias ​​die Software ausführt. Da ich ein fauler Champion bin, dachte ich daran, dafür einen Kairo-Dock-Launcher zu entwickeln. Also habe ich abaquscae eingegeben in das Kästchen „Befehl zum Starten bei Klick“ und aktiviert „In einem Terminal ausführen“. Zu meiner Bestürzung gab es jedoch beim Klicken auf den Launcher einen Fehler::

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

Folglich habe ich eine kleine Bash-Skriptdatei „abaquscae.sh“ geschrieben:

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

und gespeichert, ausführbar gemacht und beim Ausführen in der Bash-Shell habe ich erneut den ähnlichen Fehler erhalten, dh:

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

Jetzt bin ich völlig verloren, ich habe viele Tricks ausprobiert, z ,
3- Verwendung des vollständigen Pfads zur ausführbaren Datei
, aber dieses Skript wird nicht über das Bash-Terminal ausgeführt.

PROBLEM:

Der Befehl (sowie sein Alias) funktionieren im Bash-Terminal einwandfrei, aber wenn sie über einen anderen Kanal (z. B. Skripte/Launcher) ausgeführt werden, erkennt das Terminal sie kläglich nicht 🙁 ..

Wenn ein Experte Ratschläge/Informationen zur Lösung dieses Problems hat, teilen Sie dies bitte mit. Ich werde sehr dankbar sein.

Akzeptierte Antwort:

Ich denke, das Skript sollte so aussehen:

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

Sie können den Launcher auch mit dem folgenden Befehl erstellen:

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

Das Festlegen von Umgebungsvariablen vor dem Namen der ausführbaren Datei in einer Befehlszeile ist eine Funktion von CLI-Shells (Command Line Interface). Wenn Sie VARIABLE=value /path/to/executable eingeben In einem Launcher versucht das Programm, das den Launcher liest (und effektiv die ausführbare Datei startet), eine Datei mit dem Namen „VARIABLE=Wert“ zu finden und wird natürlich fehlschlagen.

Verwandte:die Startskripte für Unity Desktop?

Dieser Befehl startet bash , die Standard-Benutzer-Shell in Ubuntu, und weisen Sie sie an, sie auszuführen (das -c Option) die Zeichenfolge „XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae“, sodass sie so interpretiert wird, wie Sie sie in die CLI eingeben.


Ubuntu
  1. Eine Anleitung zum Linux-Terminal für Anfänger

  2. Liste aller möglichen Konfigurationsoptionen für Lightdm?

  3. Haben sie gerade die Hintergrundeinstellungen für das Terminal entfernt?

  4. Unterschied zwischen den Symbolen „&&“ und „;“ in einem Standard-Bash-Terminal?

  5. Was sind die Alternativen zu Network Manager for Wireless?

Auf Prozess prüfen, wenn dieser läuft?

Sind die Terminal-Farb-Escape-Sequenzen irgendwo für Bash definiert?

Torrent-Client für die Befehlszeile??

Die Bash FOR-Schleife erklärt und vereinfacht

Lösung für den Ubuntu-Startfehler „No such partition“

Gibt es eine Möglichkeit, die Umgebungsvariablen eines anderen Prozesses in Unix zu ändern?