On ÐÑÑÐÐÑÐ 16 ÑÐÐÐÑÑ 2009 18:56:15 Bart Schaefer wrote:
> On Jan 16, 2:53pm, Evert Rol wrote:
> }
> } How do I source a .sh file in zsh? It works fine in bash or sh, but
> } gives an error when source in zsh.
>
> You'll probably need to do something like
>
> emulate sh
> source bla.sh
>
> That leaves the problem of getting back to your original zsh settings
> after the script is done. Depending on what the script is supposed
> to accomplish, you might be able to wrap that in a shell function:
>
> sh_source() {
> emulate -L sh
> source "$@"
> }
>
> That won't work if the script wants to declare variables with typeset
> and have them remain set after it finishes.
>
I finally resorted to
# Poor man replacement for emulate -L
typeset -A __opts
__opts=(${(kv)options[*]})
emulate -R sh
for profile_func in /etc/profile.d/*.sh
do
source $profile_func
done
options=(${(kv)__opts[*]})
unset profile_func __opts
Given that most distributions have equivalence of /etc/profile.d, having
simple zsh way to do it (without scoping issues) would be nice.
Attachment:
signature.asc
Description: This is a digitally signed message part.