Linux treibt mich mal wieder zur Verzweiflung. Mein Ziel ist es mit
einem Doppelklick auf einem Icon eine Shell zu öffnen und automatisiert
Module laden. Danach soll diese Shell geöffnet bleiben, um darauf
arbeiten zu können. Geht das?
hubert schrieb:> Linux treibt mich> mit einem Doppelklick auf einem Icon
Moin, das sind schon mal ein paar Fehler drin.
1. Bei Linux kannst du kein Icon doppelklicken.
Wenn dann geht das bei einem XWindow System, z.Bsp. Gnome KDE oder so
2. Doppelklicks machen Microsoftleute. Und bei Windows 10 kannst du eine
Linux Shell aus einem Ubuntu System starten.
Was für Module sollen geladen werden?
Also:
Es handelt sich um GNOME.
Mit Doppelklick meine ich, dass ich auf dem Desktop einen "launcher"
erstellt habe.
Dieser soll ein Shellscript aufrufen, in der alle zu ladende module
drinstehen:
cd ~
module load <modul1>
module load <modul2>
clear
Die Shell, die dieses Skript ausführt soll aber geöffnet bleiben, um auf
ihr zu arbeiten!
Jemand schrieb:> Das Betriebssystem hat überhaupt nichts mit deinem Problem zu tun.
Irgendwie ja schon, sonst müsste ich mich mit dem module load nicht
rumschlagen...
Vielleicht wär das eine Lösung:
Möchte man ein Modul, welches der Kernel nicht automatisch mit lädt,
beim Systemstart automatisch laden, so trägt man den Modulnamen einfach
in die Datei /etc/modules ein. Dazu öffnet man diese Datei mit einem
Editor mit Root-Rechten [3] und macht die entsprechenden Einträge, wobei
pro Zeile nur ein Modulname eingetragen werden darf. Ab dem nächsten
Systemstart werden alle Module (zusätzlich) geladen, die dort
eingetragen sind.
https://wiki.ubuntuusers.de/Kernelmodule/
Dem Beispiel nach zu urteilen meinst Du nicht Kernel- sondern
Environment-Module, oder?
Wenn ja, wäre es am geschicktesten, Du lädst Deine Module über die
.bashrc (vorausgesetzt, Du nutzt die bash als Standardshell).
- rbiks
Andreas S. schrieb:> Es könnte funktionieren, als letztes Kommando in Deinem Shellskript> mittels "bash -i" eine interaktive Subshell zu starten.
Ich habe folgendes in eine launch.sh Datei geschrieben:
1
cdhome/Desktop
2
aliasfuckoff='echothats_bad_language_you_sucker!'
3
clear
4
echoTest
5
ls
6
bash-i
Wenn ich sie nun ausführe, so bleibt zwar das Fenster offen, aber der
alias wird nicht mehr erkannt. Was eigentlich auch logisch ist, weil ja
eine neue shell gestartet wurde. Genauso verhält es sich mit meinen
environment modulen. Gibt es da wirklich keine Lösung, sowas ist doch
ein Standardproblem?
Anonymous U. schrieb:> sowas ist doch> ein Standardproblem?
Eigentlich nicht. Wenn Du irgendwann mal verraten würdest was das für
ominöse Module sind weiß vielleicht auch jemand wie man die
normalerweise am besten automatisch lädt.
ansonsten hat bash noch die --rcfile Option bei der man bash beim Start
ein anderes .bashrc unterjubeln kann das beim Start ausgeführt wird,
also sowas wie
KDE
hubert schrieb:> Jemand schrieb:>> Das Betriebssystem hat überhaupt nichts mit deinem Problem zu tun.>> Irgendwie ja schon, sonst müsste ich mich mit dem module load nicht> rumschlagen...
Ich benutze Linux seit über 20 Jahren und kenne dieses Kommando nicht.
Wenn ich es auf meinem Linux-System eingebe, sagt es mir: "module:
Befehl nicht gefunden.". Vielleicht kannst du ja mal erklären, um was es
sich bei diesem ominösen Kommando handelt und warum du das über ein Icon
auf dem Desktop starten musst.
Darf das denn nur in dieser bestimmten Instanz der Shell ausgeführt
werden oder immer? In letzterem Fall wäre es besser, das in deiner
~/.bashrc einzutragen, oder falls es für alle Benutzer gelten soll in
der /etc/bash.bashrc.
Bei den module Befehlen handelt es sich um ein Linux tool:
https://uisapp2.iu.edu/confluence-prd/pages/viewpage.action?pageId=115540061
Ist aber auch egal. Es geht mir darum eine Shell zu öffnen und nicht
jedes mal die gleiche Abfolge von Befehlen einzutippen, wenn ich eine
bestimmte Konfiguration öfters brauche.
Der Tipp mit dem --rcfile hört sich etzalda ned schlecht an. Werde ich
demnächst mal probieren.
Ok, dann ist das wohl spezifisch für dieses Schul-Linux. Ich würde dann
die Variante von Bernd vorschlagen, sofern diese Modul-Kommandos nicht
immer für den Benutzer, sondern nur beim Klicken auf dieses Icon
ausgeführt werden sollen. Noch ein paar Hinweise dazu:
Bernd K. schrieb:> konsole -e bash --rcfile ~/dein/script.sh
Man kann auch gleich beim Anlegen des Icons sagen, dass das Programm in
einer Konsole geöffnet werden soll.
Wenn gewünscht, kann man der Konsole ein anderes Profil mit z.B. anderer
Hintergrundfarbe geben, um zu kennzeichnen, dass die besondere
Einstellungen verwendet.
Und es wäre sinnvoll, in dem eigenen Skript dann am Anfang die
/etc/bash.bashrc und ~/.bashrc zu sourcen, denn die werden beim obigen
Kommando ja nicht mehr direkt ausgeführt:
1
When an interactive shell that is not a login shell is started, bash
2
reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if
3
these files exist. This may be inhibited by using the --norc option.
4
The --rcfile file option will force bash to read and execute commands
5
from file instead of /etc/bash.bashrc and ~/.bashrc.
hubert schrieb:> Linux treibt mich mal wieder zur Verzweiflung. Mein Ziel ist es mit> einem Doppelklick auf einem Icon eine Shell zu öffnen und automatisiert> Module laden. Danach soll diese Shell geöffnet bleiben, um darauf> arbeiten zu können. Geht das?
geht es nicht,wenn Du in Deinem HomeDir ein .sh Shell Script anlegst und
dann -wie bei Windows - ein Desktop Icon anlegt mit der Pfadverknuepfung
auf das Shell-Script?
Bei Ubuntu Mate sollte das gehen....evtl. muss man nur schauen, dass das
Fenster nach dem laden der Module nicht gleich wieder zu geht....
Rolf M. schrieb:> Ok, dann ist das wohl spezifisch für dieses Schul-Linux.
Nicht ganz. Das ist so ziemlich der Standard mit denen in (meist
großen) Firmen zwischen Software Versionen “umgeschaltet” wird, die zum
Teil sehr lange parallel vorgehalten werden müssen. Stichworte:
Produktpflege, Configuration Management.
Ein weiteres Ziel ist, das Environment nicht unnötig zuzumüllen (Pfade,
LM_LICENSE_FILE, etc).
Unter anderem werden Abhängigkeiten aufgelöst, d.h. ein Modul kann
seinerseits Module laden, bzw. Konflikte melden.
Benutzer können sich ihre eigenen Module erzeugen, in denen sie dann die
komplette Tool Umgebung für ein Pojekt laden.
Früher(TM) hatte zu diesem Zweck jede Firma ihr eigenes mehr oder
weniger gut funktionierendes Skript, das der Admin irgendwie zurecht
geklöppelt hat. Seit dem hat sich dieses Modules System durchgesetzt.
Falls es irgendjemanden interessiert:
Problem erkannt, Problem gebannt. Die module konnten nicht geladen
werden weil der Befehl der neu geöffneten Shell (andere als
Ursprüngliche, bash) nicht bekannt war. Ich musste nur das passende
Skript finden, das den alias für den module Befehl anlegt und schon
gings.