2014-10-28 16 views
12

Zaktualizowałem moją powłokę do ZSH. Kiedy mam źródło ~/.bashrc. Otrzymuję ten błądPolecenie shopt nie znaleziono w .bashrc po aktualizacji powłoki

W twoim lekarzu był błąd. kiedy wykonać tę komendę

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]]”

Proszę mi pomóc rozwiązać ten problem

+0

'zsh' nie jest' bash'. Dlaczego miałbyś źródła '.bashrc'? – FatalError

+1

Twój plik 'bashrc' został napisany dla' bash'. 'zsh' nie jest bash. Jestem zaskoczony, że próbuje załadować twój '.bashrc' w ogóle. Jeśli tak nie jest, a otrzymujesz go ręcznie z '.profile' lub podobnego. Zatrzymać. Następnie zastąp go odpowiednim plikiem inicjującym 'zsh'. –

+0

post, że jako odpowiedź – ErlVolton

Odpowiedz

4

Plik bashrc został napisany dla bash. zsh nie jest bash.

Jestem zaskoczony, zsh próbuje w ogóle załadować twój .bashrc.

Jeśli tak nie jest, a otrzymujesz go ręcznie (od .profile lub podobnego). Przestań to robić.

Następnie należy napisać odpowiedni plik init zsh.

Jeśli chcesz użyć zsh, musisz użyć zsh, a nie bash.

shopt to bash-ism.

[[ to bash-ism.

+0

echo "export NODE_PATH = $ NODE_PATH:/usr/local/lib/node_modules" >> ~ .bashrc && source ~/.bashrc. Kiedy wykonuję to polecenie w mojej powłoce otrzymuję ten błąd – Amerrnath

+0

@ user1475089 Tak, ponieważ twój plik '.bashrc' zawiera rzeczy, które nie są legalne' zsh'. Musisz przestać to robić. Jeśli chcesz ten eksport w powłoce 'zsh' trzymasz to w swoim pliku inicjującym' zsh', a nie '.bashrc'. –

+0

mogę wyjaśnić ci szczegółowo szczegóły – Amerrnath

6

shopt nie jest poleceniem, ale wbudowaną powłoką. bash wie, co z nim zrobić, ponieważ jest to wbudowane w bash, ale zsh nie ma pojęcia, co to jest. Będziesz chciał przejrzeć setopt, który jest wbudowany w zsh i umieścić te wartości w nowym skrypcie .zshrc.

+0

czy możesz mi pomóc, jak użyć setopt do tego sklepu – Amerrnath

+1

To jest nie jest to prosta prośba. Twój plik .bashrc ma co najmniej 109 linii i nie wiem, ile z nich to komentarze lub białe znaki. Mogę tylko zasugerować, abyś przejrzał swój plik .bashrc, aby dowiedzieć się, co robi, a następnie dowiedzieć się, jak zrobić to samo w zsh. Jeśli nigdy nie dostosowałeś swojego '.bashrc', to może wszystko, czego potrzebujesz, aby zmienić twoje polecenie na:' echo 'export NODE_PATH = $ NODE_PATH:/usr/local/lib/node_modules ">> ~/.zshrc && source ~/.zshrc' – Omnipresence

25

zsh używa profilu env ~/.zshrc, a nie ~/.bashrc.

więc trzeba dołączać swoje ustawienia env do .zshrc plik, a następnie

source ~/.zshrc 

To musi działać.

rbenv github link

+0

To nie wyjaśnia, dlaczego 'shopt' pracował w bach (ponieważ to nie jest bash wbudowany). Odpowiedź @ Omnipresence jest bardziej pouczająca. –

10

Aby umieścić coś w ~/.bashrc:

Przełącz na bash:

exec bash 

Następnie

source ~/.bashrc 

Przełączanie bash nie wpłynie na nowe okno terminala. Ale jeśli chcesz zmienić bieżące okno na zsh.

Przełącz na zsh:

exec zsh 

reference

Powiązane problemy