web-dev-qa-db-de.com

der Befehl shopt wurde nach der Shell-Aktualisierung nicht in .bashrc gefunden

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

19
Amerrnath

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.

rbenv github link

47
sudoz

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

Referenz

24

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.

10
Omnipresence

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.

6
Etan Reisner

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
3
Florian

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

0

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

lösung:

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
0
hxysayhi