คุณจะส่งออก. bashrc เป็น. zshrc ได้อย่างไร?


87

ฉันพยายามย้ายไป zsh จาก Bash

ฉันใส่. bashrc ลงใน. zshrc โดยตรงและมันทำให้เกิดข้อผิดพลาดมากมายเมื่อฉันพยายามใช้ Bash อีกครั้ง

คุณจะส่งออก. bashrc เป็น. zshrc ได้อย่างไร?


19
อย่าปล่อยให้ zsh-hater นี้ทำให้คุณผิดหวัง Zsh เยี่ยมมาก!
Jeremy Cantrell

คำตอบ:


110

ในขณะที่คำตอบของ lhunath ผลักฉันไปในทิศทางที่ถูกต้อง zsh ดูเหมือนจะไม่ได้มา.profileโดยอัตโนมัติ ข้อมูลดีๆมากมายเกี่ยวกับหัวข้อนี้สามารถพบได้ในโพสต์ superuserนี้

การดัดแปลงที่ฉันใช้คือการใส่นามแฝงและฟังก์ชันทั่วไป.profileและจัดหาด้วยตนเองดังนี้:

ใน~/.bashrc:

source ~/.profile

ใน~/.zshrc:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

emulateเป็นคำสั่ง zsh builtin ด้วยอาร์กิวเมนต์เดียวตั้งค่าตัวเลือก zsh เพื่อจำลองเชลล์ที่ระบุให้มากที่สุด


2
ใช่ฉันคิดว่านี่เป็นแนวทางที่ดีที่สุด ขอบคุณสำหรับคำตอบ!
LéoLéopold Hertz 준영

คำตอบข้างต้นก็ใช้ได้ดีสำหรับฉันเช่นกัน แต่ฉันต้องทำทุกครั้งที่เปิดเทอร์มินัล zshrc บอกวิธีแก้ไขได้ไหม
thedudecodes

33

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


ดูที่ stament "ฉันใส่. bashrc ไว้ที่. zshrc โดยตรงและมันทำให้เกิดข้อผิดพลาดมากมายเมื่อฉันพยายามใช้ Bash อีกครั้ง" ตอนนี้คิดสักครู่ว่าอะไรจะทำให้เกิดสิ่งนั้น ... แล้วรีโพสต์ของคุณ
ojblass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.