Як ви можете експортувати .bashrc до .zshrc?


85

Я намагаюся перейти на zsh з Bash.

Я розмістив свій .bashrc безпосередньо на своєму .zshrc, і це призвело до багатьох помилок, коли я намагався використовувати Bash знову.

Як ви можете експортувати .bashrc до .zshrc?


19
Не дозволяйте цьому zsh-ненависнику вас збити. Zsh чудово!
Джеремі Кантрелл

Відповіді:


109

Поки відповідь lhunath підштовхнула мене у правильному напрямку, zsh, схоже, не .profileавтоматично. Багато корисної інформації на цю тему можна знайти в цій публікації суперкористувача .

Адаптація, яку я використовую, полягає у введенні загальних псевдонімів та функцій .profileта їх ручному пошуку наступним чином:

В ~/.bashrc:

source ~/.profile

В ~/.zshrc:

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

emulate- це вбудована команда zsh. За допомогою одного аргументу налаштуйте параметри zsh, щоб якомога більше наслідувати вказану оболонку.


2
Так, я думаю, що це найкращий підхід. Спасибі за вашу відповідь!
Лео Леопольд Герц, 준영

вищевказана відповідь добре працює і для мене. але мені доводиться це робити щоразу, коли я відкриваю термінал zshrc. Ви можете сказати мені, як це виправити.
thededecodes

32

Ви не можете " експортувати " свій .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замість цього. Здебільшого лише для власних потреб (і врешті-решт для людей, з якими ви ділитесь із ними) заради портативності.


Подивіться на твердження "Я розмістив свій .bashrc безпосередньо на своєму .zshrc, і це спричинило багато помилок, коли я намагався використовувати Bash знову". тепер на хвилинку подумайте, що це може спричинити ..., а потім переформулюйте свій пост.
ojblass
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.