cd ไปที่ไดเรกทอรีโดยพิมพ์ชื่อหรือไม่


20

ตัวอย่างเช่นหากมีไดเรกทอรี 'blob' อยู่และฉันพิมพ์ 'blob [return]' จากนั้นระบบcdจะเข้าสู่ไดเรกทอรี blob สำหรับฉัน

ใน Linux (Ubuntu) ฉันสามารถเพิ่มไฟล์shopt -s autocdของฉันได้.bashrcแต่ใน OS X จะมีข้อผิดพลาด:-bash: shopt: autocd: invalid shell option name

คำตอบ:


25

autocdถูกเพิ่มใน bash 4.0 คุณสามารถติดตั้ง bash รุ่นใหม่กว่าด้วย Homebrew และเปลี่ยนเปลือกเข้าสู่ระบบเริ่มต้นด้วยchsh:

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

หลังจากที่คุณเปิดเปลือกเข้าสู่ระบบใหม่ (หรือแท็บโดยเริ่มต้นในเทอร์มิหรือ iTerm 2) ควรพิมพ์สิ่งที่ต้องการecho $BASH_VERSION4.2.45(2)-release

Terminal และ iTerm 2 เปิดเปลือกหอยเปลือกหอยใหม่เข้าสู่ระบบโดยค่าเริ่มต้นดังนั้นทุบตีอ่านแต่ไม่~/.bash_profile ~/.bashrcหากคุณไม่ได้มา~/.bashrcจาก~/.bash_profileหรืออะไรเพิ่มshopt -s autocdไปแทน~/.bash_profile~/.bashrc


1
คำตอบที่ดี Bash 4 นั้นยังมีใน MacPorts: subbing sudo port install bashในขั้นตอนที่ 1 ของคุณก็ใช้ได้เช่นกัน
ephsmith

ฉันทำข้างต้น ฉันลงเอยด้วย bash 4.2.29 และฉันทำการเปลี่ยนแปลงกับ / etc / shells และทำ cssh แต่ไม่มีความสุข
Michael Durrant

@MichaelDurrant ฉันแก้ไขคำตอบ bash -versionจะเป็นเวอร์ชันแรกใน $ PATH คุณลองecho $BASH_VERSIONไหม
Lri

มันทำงานได้ถ้าฉันเรียกใช้คำสั่งโดยตรง / usr / local / bin / bash - ฉันได้รับ v4.2 แต่ฉันจะทำให้เปลือกเริ่มต้นของฉันสำหรับหน้าต่างใหม่ได้อย่างไร
Michael Durrant

1
@MichaelDurrant แอปพลิเคชันเทอร์มินัลของคุณถูกตั้งค่าให้เปิดด้วยบางสิ่งบางอย่างที่เหมือน/usr/bin/loginหรือlogin -fp $USERในการตั้งค่า?
Lri

2

ผลลัพธ์ของshopt -pสามารถช่วยได้ที่นี่ มันพิมพ์รายการตัวเลือกที่ตั้งค่าได้ น่าเศร้าที่เกี่ยวกับสิงโตautocdเป็นไม่ได้หนึ่งของพวกเขา (ดูข้อความที่ตัดตอนมาด้านล่าง)

แก้ไข คำตอบของ Lauri ด้านบนมีวิธีแก้ปัญหาสำหรับการอัพเดตเชลล์ของคุณเพื่อรวม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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.