Linuxmint XFCE 20.2 - Wie einen Terminal-Befehl automatisch beim Login ausführen?

evtldocha  31.10.2022, 14:52

Das heiß aber Du startest in der Sitzung zuerst ein Terminal (per Klick)? Oder startest Du das Terminal bereits über Autostart?

vefan 
Fragesteller
 31.10.2022, 14:53

Ich starte per Klick xfce4-terminal und gebe dann die Befehle ein.

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Nach der Antwort auf die Nachfrage.

Dann solltest Du meiner Meinung alle Befehle in eine .bashrc einbauen. Dein Vorhaben hat eigentlich mit dem Sitzungsmanager/Desktopmanager nichts mehr zu tun (auch wenn man dort modifizieren könnte wie beispielsweise das xfce4-terminal konkret gestartet werden soll). Für mich ist der natürliche Ort die .bashrc (oder falls MINT mittlerweile eine andere Default-Shell haben sollen, die entsprechende .*rc Datei der Default-Shell).

vefan 
Fragesteller
 31.10.2022, 15:23

Danke. Da muss ich mich erst mal einlesen wie das geht.

0
evtldocha  31.10.2022, 15:27
@vefan

Datei ".bashrc" im $HOME Verzeichnis anlegen / editieren. Das sollte es normalerweise sein (Zumindest auf meiner Linux Distribution reicht das)

1
vefan 
Fragesteller
 31.10.2022, 15:43
@evtldocha

Ist der Eintrag so richtig in der .bashrc?

"alias abc='cd '/user/home/ordner' && '/home/user/ordner/abc.py' start"

Und dann unter Automatisch gestartete Anwendungen als Befehl ".bashrc" beim login eingeben oder ".bashrc abc"?

0
evtldocha  31.10.2022, 15:51
@vefan

Nein

cd /user/home/ordner && /home/user/ordner/abc.py start

in die .bashrc - fertig. Aber Achtung, dass wird dann auch bei jedem Start einer bash ausgeführt.

1
vefan 
Fragesteller
 31.10.2022, 16:00
@evtldocha

Das sollte es nicht, sondern nur nur einmalig beim booten. Wie kann man das lösen.

0
vefan 
Fragesteller
 02.11.2022, 13:45

Habe eine Teil-Lösung gefunden :-)

Jetzt funktioniert das Skript mit direktem Aufruf der abc.sh ohne vorher "source" im Terminal einzugeben. Auch das ausrauten der anderen aliase in der .bash_aliases fällt jetzt weg.

#!/bin/bash

shopt -s expand_aliases

source /home/user/.bash_aliases

alias foo=abc

foo

Nun bleibt noch die Frage wie das skript nach dem booten (login) automatisch ausgeführt wird.

0
evtldocha  02.11.2022, 13:52
@vefan

Booten: Schau mal nach cron. Da gibt es die Möglichkeit "@reboot" Einträge zu machen. Die Einträge werden nur nach einem reboot ausgeführt.

1
vefan 
Fragesteller
 03.11.2022, 12:53

Noch mal eine Rückmeldung.

Es funktioniert, aber nur über einen Umweg.

Mit /etc/crontab und systemd hatte ich keinen Erfolg. Die abc.sh wird nicht ausgeführt nach reboot.

sowohl mit "@reboot /home/user/abc.sh" als auch "@reboot /usr/bin/screen -d -m /home/user/abc.sh"

In Linuxmint gibt es kein /usr/bin/screen.

Funktionieren tut es wenn ich in "Sitzung und Startverhalten", Reiter "Automatisch gestartete Anwendungen" unter "Befehl" die abc.sh auswähle.

Dann wird sie nach reboot ausgeführt. Nicht im Terminal, aber im Taskmanager findet sich die laufende "abc.py start".

Insofern über Umweg das Problem gelöst ;-)

0

https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/

Lesen,Verstehen, Umsetzen ..


Und wenn man schon ein Script schreibt fängt es meistens mit /bin/bash an damit Linux weis was es zu tun hat und setzt die Befehle auch um. Ohne dies kannst du schreiben was du willst ,es wird niemals korrekt ausgeführt.

Woher ich das weiß:Berufserfahrung – Linux Administrator
vefan 
Fragesteller
 01.11.2022, 13:07

Leider wird der Eintrag in der /home/user/.bashrc nicht automatisch nach dem login ausgeführt. Erst wenn man händisch ein Terminal öffnet und dann jedesmal beim öffnen.

Ich habe nun eine /home/user/.bash_aliases angelegt und

alias abc='cd /home/user/ordner && /home/user/ordner/abc.py start'

alias abcd='cd /home/user/ordner && /home/user/ordner/abc.py stop'

eingefügt.

Nun kann ich im Terminal mit dem Befehl "abc" die Datei starten und mit "abcd" stoppen.

Versuche ein script zu erstellen, scheitern daran, dass ich nicht weiß, was ich ins Script schreiben muss damit "cd /home/user/ordner && /home/user/ordner/abc.py start" im xfce4-terminal ausgeführt wird.

https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/ war leider nicht zielführend für meine Anforderung einen alias Befehl mit einem Script ausführbar zu machen.

Hier mein script mit den Versuchen, die nicht funktionieren.

------------------------

#/bin/bash alias rtb='cd /home/user/ordner && /home/user/ordner/abc.py start'

#/bin/bash

#SOURCES=(/home/user/.bash_aliases )

#TARGET="xfce4-terminal"

#xfce4-terminal

#grep -E cd /home/user/ordner && /home/user/ordner/abc.py start | xargs xdg-open

grep -E /home/user/.bash_aliases | xargs xfce4-terminal

-------------------------

Ziel soll im ersten Schritt sein das sich nach dem Script ausführen xfce4-terminal öffnet und den alias ausführt und im zweiten Schritt das Script automatisch nach jedem login (booten) starten zu lassen.

PS: Wenn ich das Terminal Symbol anklicke wird "exo-open --launch TerminalEmulator" ausgeführt. Das gestartete Terminal ist dann "xfce4-terminal" (Befehl für das direkte aufrufen).

0
vefan 
Fragesteller
 01.11.2022, 16:25

Nun hab ich eine Skript-Lösung gefunden mit der zumindest ein alias manuell im Terminal ausgeführt wird per abc.sh

Dazu muss ich aber alle aliase in der .bash_aliases ausrauten bis auf die eine, die per skript ausgeführt werden soll:

________________

alias abc='cd /home/user/ordner && /home/user/ordner/abc.py start'

#alias abcs='cd /home/user/ordner && /home/user/ordner/abc.py stop'

#alias abcl='cd /home/user/ordner && /home/user/ordner/abc.py list'

#alias abcd='cd /home/user/ordner && /home/user/ordner/abc.py del'

----------------

abc.sh:

________________

#!/bin/bash

shopt -s expand_aliases

alias foo=bar

foo

________________

Der Aufruf im Terminal funktioniert aber nur mit $ source '/home/user/abc.sh'

Wenn ich "source" weglasse: $ '/home/user/abc.sh' kommt die Meldung: /home/user/abc.sh: Zeile 7: bar: Befehl nicht gefunden.

Jetzt muss ich noch eine Lösung finden, dass das Skript immer nur den alias "abc" nimmt, damit ich die anderen "abc's" nicht jedesmal ausrauten muss in der .bash_aliases.

Und dann noch wie ich Linuxmint dazu bekomme das die abc.sh inklusive "source" im Befehl nach jedem login beim booten ausgeführt wird.

Quelle für das Skript:

https://askubuntu.com/questions/98782/how-to-run-an-alias-in-a-shell-script

0