Ich möchte Terminator beispielsweise in einem bestimmten Verzeichnis öffnen /home/downloads/
und dann einen Befehl ausführen.
Ich habe den ersten Teil mit diesem "benutzerdefinierten Befehl" ausgeführt: cd /home/downloads; bash
Terminator startet jetzt in diesem Verzeichnis, aber wie kann ich den zweiten Teil ausführen?
Nun , da Terminator im Download - Verzeichnis gestartet wurde, möchte ich jeden Befehl ausführen Ich möchte zum Beispiel ls
oder rake
Befehl oder einige Aliase als Befehle verwenden. Wie kann ich das machen?
Ich drücke die rechte Maustaste im Terminator und wähle Parameter, dann Layouts, dann füge ich Text im Abschnitt Benutzerdefinierter Befehl hinzu.
All dies muss nach dem Start des Terminators automatisch durchgeführt werden.
Antworten:
Führen Sie
cd /home/downloads; exec bash
als benutzerdefinierten Befehl aus. (Dasexec
eingebaute Gerät stellt sicher, dassbash
es sich um ein untergeordnetes Element des Terminalemulators handelt. Ohne dieses Terminal wird es möglicherweise ein Enkelkind.) Sie könnenterminator -e 'cd /home/downloads; exec bash'
über die Befehlszeile ausgeführt werden.Sie können im benutzerdefinierten Befehl keine Aliase verwenden, da Ihre Aliase durch definiert sind. Diese
~/.bashrc
Datei wird jedoch nur von interaktiven Shells geladen, nicht von der Scripting-Shell, die hier als Klebstoff zwischen dem Terminalemulator und der Scripting-Shell verwendet wird. Wenn Sie Aliase verwenden möchten, müssen Sie diese explizit laden. Wenn Sie sie in einer separaten Datei aufbewahren, wäre das so etwas wieoder in der Kommandozeile
Wenn Ihre Aliase vorhanden sind
~/.bashrc
, verwenden Sie. ~/.bashrc
, aber achten Sie darauf, dass möglicherweise Dinge in Ihrem.bashrc
Benutzer Fehler verursachen, da die Shell nicht interaktiv ist. In diesem Fall besteht die einfachste Lösung darin, Ihre Aliase (und Funktionen sowie alle anderen Einstellungen, die Sie im Klebercode verwenden möchten) in eine separate Datei aufzuteilen und.
diese aus einzuschließen.bashrc
.quelle
Ich hatte das gleiche Problem beim Aktivieren virtueller Umgebungen mit Terminator .
Der Trick besteht darin, alles mit nur einem Befehl zu erledigen :
bash
. Nutzen Sie die-i
Option (interaktiv) und verwenden Sie eine benutzerdefinierte Option, die--rcfile
auf dasPROMPT_COMMAND
eingestellt ist, was wir ausführen möchten. Das Ergebnis wäre wie folgt:Ersetzen
your commands; go here;
Sie einfach durch Ihre tatsächlichen Befehle. In dieser Antwort finden Sie eine Erklärung .quelle
Fügen Sie den anderen Befehl genauso hinzu wie den ersten. Zum Beispiel, um Folgendes auszuführen
ls
:Sie können dies zur Option "Befehl" Ihres Profils hinzufügen:
Der Grund, den Sie nicht erhalten,
rake
ist, dass es nicht im Standardpfad ist. Um es zu verwenden, müssen Sie den Pfad angeben. Führen Sie diesen Befehl zunächst in Ihrem Terminal aus:Das wird so etwas wie zurückgeben
/foo/bin/rake
. Das ist der Weg, den Sie brauchen. Nehmen Sie es und fügen Sie es dem obigen Befehl "Benutzerdefiniert" hinzu:Dies funktioniert nicht für Aliase. Aliase werden von Ihrer Shell eingerichtet und sind hier nicht verfügbar. Eine Problemumgehung besteht darin, stattdessen Skripte zu verwenden. Wenn Sie also einen Alias wie diesen haben:
Erstellen Sie ein Skript, rufen Sie es auf
foo.sh
und speichern Sie es/home/youruser/bin
mit folgenden Inhalten:Und machen Sie es ausführbar:
Verwenden Sie dann im Abschnitt "Benutzerdefinierter Befehl":
quelle
rake
sollten es aber, wenn Sie den vollständigen Pfad verwenden/path/to/rake
.cd /path/to/rake; rake; bash
tun/path/to/rake; rake; bash
.Wenn Sie mit der rechten Maustaste auf ein geöffnetes Terminator-Fenster klicken, können Sie "Einstellungen" auswählen. Wählen Sie das "Profil" und von dort die Registerkarte "Befehl". Es gibt ein Kontrollkästchen mit dem Titel "Führen Sie einen benutzerdefinierten Befehl anstelle meiner Shell aus."
Ich glaube, das ist es, wonach Sie suchen.
quelle
Verwenden Sie einfach nicht '
command =
', um das Verzeichnis zu wechseln. Verwenden Sie es für Ihren eigentlichen Befehl!Geben Sie beim Bearbeiten
.config/terminator/config
einfach andirectory = <dir>
' wenn das Terminal automatisch in ein bestimmtes Verzeichnis cd soll, odercommand = <cmd>; <your_shell>
' Wenn ein benutzerdefinierter Befehl ausgeführt werden soll und nicht nur das Verzeichnis gewechselt werden sollZum Beispiel:
Wenn Sie nur möchten, dass das Terminal
<dir>
beim Start eine CD erstellt , geben Sie 'Verzeichnis' an und lassen Sie 'Befehl' leer:Wenn Sie nur einen benutzerdefinierten Befehl ausführen möchten, geben Sie nur den folgenden Befehl an:
Wenn Sie möchten, dass beide in DIR cd und Befehl ausführen:
quelle