ฉันพยายามย้ายไป zsh จาก Bash
ฉันใส่. bashrc ลงใน. zshrc โดยตรงและมันทำให้เกิดข้อผิดพลาดมากมายเมื่อฉันพยายามใช้ Bash อีกครั้ง
คุณจะส่งออก. bashrc เป็น. zshrc ได้อย่างไร?
ฉันพยายามย้ายไป zsh จาก Bash
ฉันใส่. bashrc ลงใน. zshrc โดยตรงและมันทำให้เกิดข้อผิดพลาดมากมายเมื่อฉันพยายามใช้ Bash อีกครั้ง
คุณจะส่งออก. bashrc เป็น. zshrc ได้อย่างไร?
คำตอบ:
ในขณะที่คำตอบของ lhunath ผลักฉันไปในทิศทางที่ถูกต้อง zsh ดูเหมือนจะไม่ได้มา.profileโดยอัตโนมัติ ข้อมูลดีๆมากมายเกี่ยวกับหัวข้อนี้สามารถพบได้ในโพสต์ superuserนี้
การดัดแปลงที่ฉันใช้คือการใส่นามแฝงและฟังก์ชันทั่วไป.profileและจัดหาด้วยตนเองดังนี้:
ใน~/.bashrc:
source ~/.profile
ใน~/.zshrc:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
emulateเป็นคำสั่ง zsh builtin ด้วยอาร์กิวเมนต์เดียวตั้งค่าตัวเลือก zsh เพื่อจำลองเชลล์ที่ระบุให้มากที่สุด
คุณไม่สามารถ " ส่งออก " .bashrcเป็น.zshrcไฟล์. .bashrcคือไฟล์ที่รันbashคำสั่ง .zshrcคือไฟล์ที่รันzshคำสั่ง
คุณไม่สามารถคาดหวังzshที่จะสามารถเรียกใช้bashคำสั่งในของคุณ.bashrcดังนั้นคุณควรแปลงเป็นใหม่.zshrcแทนการพยายามที่จะเรียกใช้.bashrcจาก.zshrcหรือคัดลอกลงในอดีตหลัง
หากคุณต้องการไฟล์เริ่มต้นเชลล์ทั่วไปสำหรับเชลล์ทั้งหมดของคุณ ใช้.profile(และลบ.bashrcและ.zshrc) มีที่มาจากกระสุน POSIX ทั้งหมด และในนั้นติด POSIX เปลือกให้บริการเท่านั้น จากนั้นรหัสนั้นจะทำงานในเชลล์ POSIX ใด ๆ (แม้ว่าฉันจะไม่แน่ใจ 100% ว่าzshเป็นไปตาม POSIX)
ดู: http://mywiki.wooledge.org/DotFiles
แม้ว่า - และก่อนอื่นฉันจะอ่านคำถามส่วนนี้ของคุณผิด - คุณไม่ควรพบข้อผิดพลาดbashเมื่อเรียกใช้.bashrcเว้นแต่คุณจะใส่zshคำสั่งไว้ที่นั่น รึเปล่า? คุณได้รับข้อผิดพลาดอะไร สำหรับฉันดูเหมือนว่าคุณได้เพิ่มzshรหัสในของคุณ.bashrcและbash(เห็นได้ชัดว่า) ไม่เข้าใจ
ในทางกลับกันojblassพยายามสร้างจุดของการพกพาซึ่งมีเพียงบางส่วนเท่านั้นที่ประสบความสำเร็จ zshเป็นเปลือกหอยที่ยอดเยี่ยม (แม้ว่าฉันจะไม่ได้รับเกียรติคุณ) แต่เมื่อเขียนสคริปต์ ฉันขอแนะนำให้คุณทำเช่นนั้น#!/usr/bin/env bashแทน ส่วนใหญ่เป็นเพียงเพื่อตัวคุณเอง (และในที่สุดก็คือคนที่คุณแบ่งปันด้วย) เพื่อประโยชน์ในการพกพา