[MacPorts] #40603: MacPorts bash doesn't work properly as a default shell (should define SH_SOURCE_BASHRC)
MacPorts
noreply at macports.org
Sat Oct 12 11:26:51 PDT 2013
#40603: MacPorts bash doesn't work properly as a default shell (should define
SH_SOURCE_BASHRC)
----------------------+----------------------
Reporter: dlitz@… | Owner: raimue@…
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version: 2.2.0
Resolution: | Keywords:
Port: bash |
----------------------+----------------------
Comment (by dlitz@…):
Thanks, but one clarification:
> The usual workaround for the different startup files for interactive and
> login shells would be to to source .bashrc from your .bash_profile.
That's about login vs non-login shells, and SSH_SOURCE_BASHRC doesn't
change
that behavior. This is about running .bashrc from a ''non-interactive''
shell,
such as when you try to use `git pull` over SSH from a repository on your
Mac.
> The bash upstream maintainer actually advises against it (that's why it
isn't
> enabled by default). I am in the process of checking which other
> distributions enable this as well, but it seems like almost every Linux
> distribution does it.
I assume you're referring to this comment by Chet Ramey[1]:
> Here's the problem: consider a user who runs a shell that doesn't
understand
> $SHLVL in the same way bash does (they do exist). They ssh to a system
with
> bash modified with SSH_SOURCE_BASHRC enabled. Every time they run,
> explicitly (unlikely) or via some other agent (more likely), `bash -c
> command', their .bashrc file, if it exists, will be read, as will the
system
> /etc/bashrc if that's been enabled. This will lead to some really
obscure
> bug reports. It's happened.
Chet's criticism is valid. Adding special-case knowledge of SSH into the
shell
is a dirty hack, and it would be better if everyone could agree on some
way of
allowing the user to set environment variables dynamically prior to
loading the
shell (e.g. in a PAM module or something). However, that has its own
problems,
e.g. for "restricted shells". Right now, it seems that there's no easy,
clean
solution and it doesn't seem to be on anybody's agenda to actually solve
this
problem any time soon (especially in a cross-platform way).
Right now, setting environment variables on OSX outside ~/.bashrc is a
pretty
big mess[2]. SSH_SOURCE_BASHRC is quite clean, in comparison, and much
more
flexible.
There's a reasonable argument that SSH_SOURCE_BASHRC is the wrong approach
to
this problem in general. However, the fix is something that can only be
properly solved by the OS vendor. The issue that Chet points out isn't
solved
by having MacPorts bash behave differently from Apple bash: Programs on
OSX
need to cope with the behavior of Apple bash anyway.
So, despite the (valid) criticism of this approach in general, it would
still
be better if MacPorts bash behaved the same Apple bash here, regardless of
what
other distros do.
At the moment, using MacPorts bash as my login shell breaks `git pull my-
mac:~/path/to/repo`.
[1] http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00028.html
[2] http://stackoverflow.com/questions/603785/environment-variables-in-
mac-os-x/4567308#4567308
--
Ticket URL: <https://trac.macports.org/ticket/40603#comment:3>
MacPorts <http://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list