cd in ein Verzeichnis, indem Sie seinen Namen eingeben?

Wenn zum Beispiel ein Verzeichnis „blob“ existiert und ich einfach „blob[return]“ eintippe, wechselt das System cdfür mich in das blob-Verzeichnis.

Unter Linux (Ubuntu) kann ich shopt -s autocdmeiner .bashrcDatei etwas hinzufügen, aber unter OS X gibt dies einen Fehler aus:-bash: shopt: autocd: invalid shell option name

Antworten (2)

autocdwurde in Bash 4.0 hinzugefügt. Sie können eine neuere Version von bash mit Homebrew installieren und dann die Standard-Login-Shell mit ändern chsh:

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

Nachdem Sie eine neue Anmelde-Shell (oder standardmäßig eine Registerkarte in Terminal oder iTerm 2) geöffnet haben, echo $BASH_VERSIONsollte so etwas wie 4.2.45(2)-release.

Terminal und iTerm 2 öffnen standardmäßig neue Shells als Anmelde-Shells, sodass bash liest ~/.bash_profile, aber nicht ~/.bashrc. Wenn Sie nicht ~/.bashrcvon ~/.bash_profileoder irgendetwas beziehen, fügen Sie shopt -s autocdzu ~/.bash_profileanstelle von hinzu ~/.bashrc.

Gute Antwort. Bash 4 ist auch in MacPorts verfügbar: Subbing sudo port install bashin Ihren Schritt 1 funktioniert auch.
Ich habe das oben gemacht. Ich landete bei bash 4.2.29 und nahm die Änderungen an /etc/shells vor und machte die cssh, aber keine Freude
@MichaelDurrant Ich habe die Antwort bearbeitet. bash -versionwäre die erste Version auf $PATH. Hast du es versucht echo $BASH_VERSION?
Es funktioniert, wenn ich den Befehl direkt ausführe /usr/local/bin/bash - ich bekomme v4.2, aber wie mache ich das zu meiner Standard-Shell für ein neues Fenster?
@MichaelDurrant Ist Ihre Terminalanwendung so eingestellt, dass sie mit etwas wie /usr/bin/loginoder login -fp $USERin den Einstellungen geöffnet wird?
Akzeptiert und ich habe einen Screenshot hinzugefügt, wo ich das ändern kann.
Obwohl es in tmux nicht funktioniert und es auch nicht meine PS1 (?) Eingabeaufforderung mit Verzeichnis und Benutzername anzeigt
@MichaelDurrant Ich habe den Screenshot aus der Antwort entfernt, da sowohl Terminal als auch iTerm 2 standardmäßig eine Anmelde-Shell öffnen sollten. Wenn die Standard-Shell /usr/bin/local/bashohne ist --login, .bash_profilewird nicht geladen.
[unaccept] Dies funktioniert nicht für einen neuen Mac, den ich einrichte.
Ich habe erneut versucht, eine neuere Bash zu verwenden, aber sogar /usr/local/bin/bash ausgeführt und dann nach einem Sprichwort bash --version gesagt3.2.51(1)brew install bash4.2.45 already installed
Wenn /binvorher /usr/local/binauf dem Weg ist, bash --versionist wie /bin/bash --version. Versuchen Sie es echo $BASH_VERSIONstattdessen. Hast du shopt -s autocdzu ~/.bash_profileoder hinzugefügt ~/.bashrc?
2017 ist das wieder passiert. Und blieb wieder bei der alten Version hängen. @ user495470 hat meinen Screenshot entfernt, was mir wirklich geholfen hätte. Es ist mir egal, was passieren „sollte“. Wie diese Antwort mich jedes Mal stecken lässt, wenn ich sie wiederentdecke.

Die Ausgabe von shopt -pkann hier hilfreich sein. Es druckt eine Liste der einstellbaren Optionen. Leider gehört Lion autocdnicht dazu (siehe Auszug unten).

Bearbeiten Lauris Antwort oben enthält eine Lösung zum Aktualisieren Ihrer Shellautocd

$ 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