CD in ein Verzeichnis durch Eingabe seines Namens?

20

Wenn zum Beispiel ein Verzeichnis 'blob' existiert und ich nur 'blob [return]' eingebe, wird das System cdfür mich in das Verzeichnis blob verschoben.

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

Michael Durrant
quelle

Antworten:

25

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

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

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

Terminal und iTerm 2 öffnen standardmäßig neue Shells als Login-Shells. Bash liest also, ~/.bash_profileaber nicht ~/.bashrc. Wenn Sie nicht Quelle tun ~/.bashrcaus ~/.bash_profileoder irgendetwas, fügen Sie shopt -s autocdzu ~/.bash_profilestatt ~/.bashrc.

Lri
quelle
1
Gute Antwort. Bash 4 ist auch in MacPorts verfügbar: Das Einfügen sudo port install bashin Schritt 1 funktioniert ebenfalls.
Ephsmith
Ich habe das oben gemacht. Ich endete mit Bash 4.2.29 und ich nahm die Änderungen an / etc / shells vor und tat das cssh, aber keine Freude
Michael Durrant
@MichaelDurrant Ich habe die Antwort bearbeitet. bash -versionwäre die erste Version auf $ PATH. Hast du es versucht echo $BASH_VERSION?
Lri
es funktioniert, wenn ich den Befehl direkt / usr / local / bin / bash ausführe - ich erhalte v4.2, aber wie mache ich das zu meiner Standard-Shell für ein neues Fenster?
Michael Durrant
1
@MichaelDurrant Ist Ihre Terminal-Anwendung so eingestellt, dass sie mit etwas wie /usr/bin/loginoder login -fp $USERin den Einstellungen geöffnet wird ?
Lri
2

Die Ausgabe von shopt -pkann hier hilfreich sein. Es wird eine Liste der einstellbaren Optionen gedruckt. Leider auf Lion, autocdist nicht einer von ihnen (siehe Ausschnitt unten).

Die obige Antwort von Edit Lauri 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
Ephsmith
quelle