cd do katalogu, wpisując jego nazwę?

17

Na przykład, jeśli istnieje katalog „blob” i po prostu wpisuję „blob [return]”, to system cd s dla mnie w katalogu blob.

W Linuksie (Ubuntu) mogę dodać shopt -s autocd do mojego .bashrc plik, ale w systemie OS X powoduje to błąd: -bash: shopt: autocd: invalid shell option name

Michael Durrant
źródło

Odpowiedzi:

24

autocd został dodany w bash 4.0. Możesz zainstalować nowszą wersję basha z Homebrew, a następnie zmienić domyślną powłokę logowania za pomocą chsh:

brew install bash;echo /usr/local/bin/bash|sudo tee -a /etc/shells;chsh -s /usr/local/bin/bash

Po otwarciu nowej powłoki logowania (lub domyślnie karty w Terminalu lub iTerm 2), echo $BASH_VERSION powinien wydrukować coś takiego 4.2.45(2)-release.

Terminal i iTerm 2 domyślnie otwierają nowe powłoki jako powłoki logowania, więc bash czyta ~/.bash_profile ale nie ~/.bashrc. Jeśli nie masz źródła ~/.bashrc z ~/.bash_profile lub cokolwiek, dodaj shopt -s autocd do ~/.bash_profile zamiast ~/.bashrc.

Lri
źródło
1
Świetna odpowiedź. Bash 4 jest również dostępny w MacPorts: subbing sudo port install bash Twój krok 1 również działa.
ephsmith
Zrobiłem powyższe. Skończyłem z bash 4.2.29 i dokonałem zmian w / etc / shells i zrobiłem cssh, ale bez radości
Michael Durrant
@MichaelDurrant Ja zredagowałem odpowiedź. bash -version byłaby pierwszą wersją w $ PATH. Próbowałeś echo $BASH_VERSION?
Lri
działa, jeśli uruchomię komendę bezpośrednio / usr / local / bin / bash - dostanę v4.2, ale jak zrobić z tej domyślnej powłoki dla nowego okna?
Michael Durrant
1
@MichaelDurrant Czy aplikacja terminala jest ustawiona na otwieranie się za pomocą czegoś takiego /usr/bin/login lub login -fp $USER w preferencjach?
Lri
2

Wyjście z shopt -p może tu być pomocna. Wyświetla listę możliwych do ustawienia opcji. Niestety na Lwie autocd jest nie jeden z nich (patrz fragment poniżej).

Edytować Odpowiedź Lauri powyżej ma rozwiązanie do aktualizacji powłoki tak, aby zawierało autocd

$ shopt -p
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -s checkwinsize
shopt -s cmdhist
shopt -u compat31
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -u extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u gnu_errfmt
shopt -u histappend
shopt -u histreedit
shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo
ephsmith
źródło