Linuxmint XFCE 20.2 - Wie einen Terminal-Befehl automatisch beim Login ausführen?
Hallo
Ich habe einen Ordner mit darin befindlichen ausführbaren Dateien. Nach dem booten gebe ich im Terminal ein:
- $ cd '/home/user/ordner'
- ~/ordner$ '/home/user/ordner/abc.py' start
Welche Befehlszeile muss ich in "Sitzung und Startverhalten", Reiter "Automatisch gestartete Anwendungen" eingeben unter "Befehl" wenn ich diese Befehle hinzufügen will, dass sie automatisch im Terminal beim login ausgeführt werden?
2 Antworten
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).
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 ;-)
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"?
Das sollte es nicht, sondern nur nur einmalig beim booten. Wie kann man das lösen.
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.
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
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).
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.