cd vào một thư mục bằng cách gõ tên của nó?


20

Ví dụ: nếu một thư mục 'blob' tồn tại và tôi chỉ cần gõ 'blob [return]' thì hệ thống cdsẽ vào thư mục blob cho tôi.

Trong Linux (Ubuntu) tôi có thể thêm shopt -s autocdvào .bashrctệp của mình , nhưng trên OS X, điều này gây ra lỗi:-bash: shopt: autocd: invalid shell option name

Câu trả lời:


25

autocdđã được thêm vào bash 4.0. Bạn có thể cài đặt phiên bản bash mới hơn với Homebrew và sau đó thay đổi vỏ đăng nhập mặc định bằng chsh:

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

Sau khi bạn mở một vỏ đăng nhập mới (hoặc một tab theo mặc định trong Terminal hoặc iTerm 2), echo $BASH_VERSIONnên in một cái gì đó như 4.2.45(2)-release.

Terminal và iTerm 2 mở shell mới dưới dạng shell đăng nhập theo mặc định, vì vậy bash đọc ~/.bash_profilenhưng không ~/.bashrc. Nếu bạn không lấy nguồn ~/.bashrctừ ~/.bash_profilehoặc bất cứ thứ gì, hãy thêm shopt -s autocdvào ~/.bash_profilethay vì ~/.bashrc.


1
Câu trả lời chính xác. Bash 4 cũng có sẵn trong MacPorts: việc sudo port install bashnhập vào bước 1 của bạn cũng hoạt động.
ephsmith

Tôi đã làm như trên. Tôi đã kết thúc với bash 4.2,29 và tôi đã thực hiện các thay đổi cho / etc / shell và thực hiện cssh nhưng không có niềm vui
Michael Durrant

@MichaelDurrant Tôi đã chỉnh sửa câu trả lời. bash -versionsẽ là phiên bản đầu tiên trên $ PATH. Bạn đã thử echo $BASH_VERSIONchưa
Lri

nó hoạt động nếu tôi chạy lệnh trực tiếp / usr / local / bin / bash - tôi nhận được v4.2 nhưng làm cách nào để tạo lớp vỏ mặc định đó cho một cửa sổ mới?
Michael Durrant

1
@MichaelDurrant Ứng dụng đầu cuối của bạn được thiết lập để mở với một cái gì đó giống như /usr/bin/loginhoặc login -fp $USERtrong các tùy chọn?
Lri

2

Đầu ra của shopt -pcó thể là một số trợ giúp ở đây. Nó in một danh sách các tùy chọn có thể thiết lập. Đáng buồn thay, trên Lion, không phảiautocd là một trong số họ (xem đoạn trích dưới đây).

Chỉnh sửa câu trả lời của Lauri ở trên có một giải pháp để cập nhật trình bao của bạn để bao gồmautocd

$ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.