Ich habe meine Shell auf ZSH aktualisiert. Wenn ich ~/.bashrc besuche. Ich bekomme diesen Fehler
Bei Ihrem Arzt ist ein Fehler aufgetreten. wenn ich diesen Befehl ausführe
echo "export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
/home/amerrnath/.bashrc:17: command not found: shopt
/home/amerrnath/.bashrc:25: command not found: shopt
/home/amerrnath/.bashrc:109: command not found: shopt
/usr/share/bash-completion/bash_completion:35: parse error near
]]'
Bitte helfen Sie mir, dieses Problem zu lösen
zsh verwendet das env-Profil ~/.zshrc
, nicht ~/.bashrc
.
sie müssen also Ihre Env-Einstellungen an die .zshrc-Datei anhängen und dann
source ~/.zshrc
Es muss funktionieren.
Um etwas in ~/.bashrc zu platzieren:
Umschalten auf Bash:
exec bash
Dann
source ~/.bashrc
Das Umschalten auf Bash wirkt sich nicht auf das neue Terminalfenster aus. Aber wenn Sie das aktuelle Fenster auf zsh umschalten möchten.
Zu zsh wechseln:
exec zsh
shopt
ist kein Befehl, sondern eine integrierte Shell. bash
weiß, was zu tun ist, weil es eine bash
-Funktion ist, aber zsh hat keine Ahnung, was es ist. Sie sollten in setopt
nachsehen, was eine zsh
-Funktion ist, und diese Werte in ein neues .zshrc-Skript einfügen.
Ihre bashrc
-Datei wurde für bash
geschrieben. zsh
ist nicht bash
.
Ich bin überrascht, dass zsh
versucht, Ihren .bashrc
überhaupt zu laden.
Ist dies nicht der Fall und Sie beschaffen es manuell (von .profile
oder ähnlich). Hör auf damit.
Dann schreiben Sie stattdessen eine entsprechende zsh
-Initdatei.
Wenn Sie zsh
verwenden möchten, müssen Sie zsh
und nicht bash
verwenden.
shopt
ist ein bash-ism.
[[
ist ein bash-ism.
Machen Sie einen Alias von shopt und nennen Sie es zsh
Eine schnelle Lösung ist hier beschrieben: https://github.com/larz258/Zshopt
Sudo vi /usr/bin/shopt
Im Laden
#!/bin/bash
args='';
for item in [email protected]
do
args="$args $item";
done
shopt $args;
mach es ausführbar
Sudo chmod +x /usr/bin/shopt
Erstellen Sie einen Alias in Ihrem .zshrc
echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc
Aus irgendeinem Grund wurde das Symlink/bin/sh nach dem Upgrade von 16.04 auf 17.10 und auf 18.04 zurückgesetzt, um Bash und nicht Bash auszuführen. Aktualisierung dieses Links:
Sudo cd /bin && ln -sf bash sh
löste dieses Problem für mich
shopt
ist kein Befehl, sondern eine eingebaute Shell. Sie können dies herausfinden, indem Sie den folgenden Befehl in bash ausführen:
type shopt
ausgabe wäre:
shopt is a Shell builtin
Schritt 1:
echo "#! /bin/bash\n\nshopt \$*\n" > /usr/local/bin/shopt
dann erhalten Sie/usr/local/bin/shopt:
#! /bin/bash
shopt $*
Schritt 2:
chmod +x /usr/local/bin/shopt
Schritt 3:
ln -s /usr/local/bin/shopt /usr/bin/shopt
Schritt 4:
echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc