2017-04-21 7 views
0

Ich verwende GNU Bash, Version 4.3.11 (1) -Release (x86_64-pc-Linux-gnu).Wie verwende ich set, um eine Shell-Variable zu ändern?

$set | grep SHELL 
SHELL=/bin/bash 
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor:verbose 

Jetzt möchte ich den Wert der SHELL-Variable in/bin/dash ändern. So versuchte ich

$set SHELL=/bin/dash 
set SHELL=/bin/dash 
$set | grep SHELL 
SHELL=/bin/bash 
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor:verbose 
_=SHELL=/bin/dash 

Ich habe auch mehrere andere Syntax ausprobiert. Aber der SHELL-Variablenwert ändert sich einfach nicht. Ich habe zwei Fragen: 1.Wie man verwendet, um die SHELL-Variable zu ändern 2. Was ist _ = SHELL =/bin/dash?

+0

versuchen hinzufügen 'export SHELL' – luoluo

Antwort

0
chsh -s {shell-name} {user-name} 

Verwendung dieses, wenn Sie möchten, dass Ihre Standard-Shell ändern

+0

was kann wirklich tun? – drdot

+0

Er setzt oder setzt Werte von Shell-Optionen und Positionsparametern einer Shell. Es ändert nicht die Shell selbst. Sie können den Link für eine detaillierte Beschreibung überprüfen. [Link] (http://linuxcommand.org/lc3_man_pages/seth.html) –

2

Die set integrierten Befehl eine Reihe von Zwecken hat dash, wie Drehen auf Tracing (set -x) oder aus (set +x). Aber es setzt auch die Positionsparameter - $1, "[email protected]", etc. Und das ist, was Sie mit getan haben:

set SHELL=/bin/dash 
echo "$1" 

Sie SHELL=/bin/dash als die Ausgabe aus dem echo zu bekommen.

eine Variable zu setzen, stellen Sie die Variable - ohne Schlüsselwörter:

SHELL=/bin/dash 

Der $_ der Wert des letzten Argument des vorherigen Befehls ist. Zum Beispiel:

$ cp oldfile.c newfile.c 
$ vim $_ 
…now editing newfile.c 
$ 

Dies kann nützlich sein, aber man kann sich auch in Probleme, weil $_ Änderungen landen, wenn man nicht erwartet, dass es zu.

Beachten Sie, dass Sie, wenn Sie fehlgeleitet genug wären, um eine C-Shell oder C-Shell-Ableitung zu verwenden, set variable=value verwenden würden, um Variablen festzulegen.

0

In Windows CMD Shell oder die Unix csh Shells, der set Befehl setzt Variablen.

In Bourne-Shells wie bash und dash können Sie jedoch Variablen ohne einen bestimmten Befehl festlegen. eine Umgebungsvariable kann so einfach sein wie:

MY_VARIABLE=some_value 

Der set Befehl etwas ganz anderes in der Tat bedeutet. Es ist vor allem in Shell-Skripten nützlich, nicht in interaktiven Shells. Sie verwenden es in einem Shell-Skript, um die "positional parameters" (wie im ersten Argument, zweiten Argument usw.) zu setzen. Sie können damit auch die Shell-Optionen wie den Tracing-Modus (-x) oder den Fail-on-Fehler (-E) einstellen.

Verwandte Themen