Ich versuche ein einfaches Skript zu erstellen, das unter anderem eine Subshell erstellt:
#!/bin/sh
# setup
"${@:-$SHELL}"
# teardown
Die Frage ist: Ich muss die Standardaufforderung ändern, also zum Beispiel:
$ # Standard-Shell
$ ./myscript
(Myscript) $ # Subshell
(Myscript) $ exit
$
Ich habe versucht mich zu ändern PROMPT
und PS1
, aber keines dieser Werke. Wie kann ich das machen?
PS.: Ich brauche eine Lösung, die wenn möglich sowohl auf Bash als auch auf ZSH funktioniert.
bash
.Antworten:
Ich denke, Sie können eine Subshell mit einer anderen Eingabeaufforderung wie der folgenden erstellen:
Beispiel
Aktuelle Umgebung:
In der Unterschale:
Zurück zur Originalschale:
quelle
here string
anstelle der Prozessersetzung eine verwenden. zB<<< "PS1..."
.Der Grund ist es nicht Arbeit sein könnte , denn wenn man die Schale laden (was zB sein sollte .:
/bin/bash
), wird es bis Nachladen seine Konfigurationsdateien beenden, die die Umgebungsvariablen für die prompte umfassen (zB .:$HOME/.bashrc
) nach der übergeben wird Umgebungsvariablen, die Sie möchten - daher werden Ihre Variablen verworfen.Möglicherweise möchten Sie die Optionen der Shell überprüfen, um benutzerdefinierte Konfigurationsdateien zu laden (z. B.
--rcfile
in Bash IINM) und diese zu verwenden sowie\env
die gewünschten Umgebungsvariablen zu übergeben. Das Problem ist, dass die Subshell nach dem Auslösen von der Shell abhängig wird.( CAVEAT EMPTOR : Ich halte dies noch nicht für eine Antwort - insbesondere habe ich noch nichts davon in meinem System ausprobiert.)
quelle