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