Hallo, ich bin gespannt, ob es möglich ist, ein Bash-Skript in Bash RC auszuführen. Es scheint eine Endlosschleife zu erzeugen, es sei denn, es gibt eine Möglichkeit, sie anzuweisen, nicht zu versuchen, eine neue Shell zu starten.
Hier ist ein Beispiel
bash_script.sh:
#!/bin/bash
echo Hello World
.bashrc
export HELLO_WORLD=$(bash_script.sh)
Ok, ich habe herausgefunden, wie das geht. In .bashrc machen Sie einfach:
quelle
source bash_script.sh
in Ihrem.bashrc
Sie müssen nichts tun. Durch einfaches Starten eines Bash-Skripts werden Sie nicht
.bashrc
aufgerufen.Ihr
.bashrc
Wille wird nur aufgerufen, wenn bash interaktiv ist. Wenn Sie ein Skript starten, ist dieses Skript nicht interaktiv.Von der Bash-Manpage:
Das wichtige Bit hier ist "ohne Argumente ohne Option gestartet". Wenn Sie ein Skript starten, ist das erste Argument, das Sie schlagen müssen, der Pfad zu diesem Skript. Daher hat es ein Argument ohne Option und ist nicht interaktiv.
quelle
Setzen Sie dies als Zeile 1:
quelle
PS1
auch im nicht interaktiven Modus eingestellt werden kann. Der Weg, um für den interaktiven Modus in Bash zu testen, ist durch[[ "$-" == *i* ]] && echo "I'm interactive"