How can you export your .bashrc to .zshrc?

前端 未结 2 1432
天涯浪人
天涯浪人 2021-01-29 21:23

I am trying to move to zsh from Bash.

I put my .bashrc directly to my .zshrc, and it caused a lot of errors when I try to use Bash again.

How can you exp

相关标签:
2条回答
  • 2021-01-29 21:52

    You can't "export" your .bashrc to a .zshrc. .bashrc is a file that runs bash commands. .zshrc is a file that runs zsh commands.

    You can't expect zsh to be able to run the bash commands in your .bashrc, so you should convert it into a new .zshrc instead of trying to run .bashrc from .zshrc or copying the former into the latter.

    If you want a common shell initialization file for all your shells; use .profile (and remove .bashrc and .zshrc). It's sourced by all POSIX shells. And in there, stick to POSIX shell features only. Then that code will run in any POSIX shell. (Though, I'm not 100% certain that zsh is POSIX compliant).

    See: http://mywiki.wooledge.org/DotFiles.

    Though - and I'd first misread this part of your question - you shouldn't experience errors from bash when running your .bashrc unless you put zsh commands in there. Did you? What errors are you getting? Sounds to me like you've added zsh code into your .bashrc and bash (obviously) doesn't understand.

    As an aside, ojblass tries to make a point of portability which only partly succeeds. zsh is a great shell (though I haven't had the honors myself), but when writing scripts; I'd recommend you do so with #!/usr/bin/env bash instead. Mostly just for your own (and eventually, the people you share with their) sake of portability.

    0 讨论(0)
  • 2021-01-29 22:07

    While lhunath's answer pushed me in the right direction, zsh does not seem to source .profile automatically. Lot's of good info on this topic can be found on this superuser post.

    The adaption I'm using is putting common aliases and functions in .profile and manually sourcing them as follows:

    In ~/.bashrc:

    source ~/.profile
    

    In ~/.zshrc:

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

    emulate is a zsh builtin command. With single argument set up zsh options to emulate the specified shell as much as possible.

    0 讨论(0)
提交回复
热议问题