On Wed, Oct 14, 2015 at 06:53:27PM +0200, Achim Gratz wrote: > Adam Dinwoodie writes: > > The /etc/defaults/etc/profile file in base-files has a section at the > > end to import scripts in /etc/profile.d, but this currently only works > > with zsh. > > No, this section is specific to zsh and probably even the wrong thing to > do -- /etc/profile is only ever intended to be run by POSIX compatible > shells (or shells in POSIX mode if they support that notion). I've kept > it alive for the time being since nothing packaged in Cygwin depends on > it. For anybody else using it for their personal customization it must > already be working. > > > Can this section be expanded to make calls as appropriate for other > > shells? I'm particularly interested in Fish and Bash, although I don't > > see any reason to limit the change to those shells. > > Bash can use ".sh" with the proviso that you can only use the POSIX > subset of its functionality. Other, non-POSIX, shells should implement > something similar in their own startup scripts. Csh already does, I > don't know enough about fish to tell how to insert something into its > start-up. IIRC, Zsh also has a way to run extra code besides just the > one in /etc/profile if you somehow need that. > > > I care about this because I'm currently investigating packaging fzf[0]. > > The obvious way to include the shell-specific keyboard shortcuts for fzf > > is to add them to /etc/profile.d, but currently that only works for > > Z-Shell. > > Look again, and don't let yourself get distracted by the zsh specific > code. :-)
Mmmkay. So I'll find somewhere else to put the zsh and fish specific scripts (I've already found somewhere for fish, and I'll take your word that zsh also has a similar directory). That, however, doesn't give me anywhere to put the Bash fzf script. It's not POSIX compliant, so I don't want to use ".sh". I can't find any directory other than /etc/profile.d that Bash trawls, though. The only other option I can think of is to rename the .bash file to .sh and to patch it to check $BASH_VERSION before running the Bash-specific code. That seems fragile though -- it means putting Bashisms in a script that may be run by non-Bash shells (even if it's gated by checking $BASH_VERSION), and it means a patch of the upstream fzf Bash script in a way that's essentially just duplicating code already in /etc/profile. (The upstream solution to this is to add code to the user's ~/.bashrc to source the relevant scripts, but I don't think that's feasible when installing the scripts via setup-*.exe.) -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple