ฉันพยายามย้ายไป 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
แทน ส่วนใหญ่เป็นเพียงเพื่อตัวคุณเอง (และในที่สุดก็คือคนที่คุณแบ่งปันด้วย) เพื่อประโยชน์ในการพกพา