← Back to team overview

desktop-packages team mailing list archive

[Bug 1482641] Re: Lightdm (and GDM) source .profile as bash, indirectly sourcing .bashrc

 

** Description changed:

  The fix for https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/678421
  leads to `.profile` being sourced by bash instead of dash. This leads
- `.bashrc` being sourced indirectly twice: once by bash when the script
- started, and once via .profile. IMHO, `.bashrc` should not be sourced
- even *once* in this situation. I suggest:
+ `.bashrc` being sourced indirectly via .profile. IMHO, `.bashrc` should
+ not be sourced even *once* in this situation. I suggest that sourcing
+ .profile actually be done with BASH_VERSION unset:
  
- 1. That the shebang be changed to:
- 
-     #! /bin/bash --norc
- 
- 2. And that sourcing .profile actually be done with BASH_VERSION unset:
- 
-     BASH_VERSION= . "$CONFIG"
+     BASH_VERSION= . "$CONFIG"
  
  At the very least, a check should be done whether bash is the user's
  login shell. In combination with the modified shebang line, it can  be
  done thus:
  
-     [ "$SHELL" == "/bin/bash" ] && .bashrc
+     [ "$SHELL" != "/bin/bash" ] && BASH_VERSION=
+     . "$CONFIG"
  
  utilizing `$SHELL` given it stores the login shell
  (http://unix.stackexchange.com/questions/45458/why-shell-doesnt-change-
  when-i-run-new-shell).
- 
- Sourcing `.profile` should still avoid sourcing `.bashrc` to avoid
- complications due to it being sourced twice.

** Description changed:

  The fix for https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/678421
  leads to `.profile` being sourced by bash instead of dash. This leads
  `.bashrc` being sourced indirectly via .profile. IMHO, `.bashrc` should
  not be sourced even *once* in this situation. I suggest that sourcing
  .profile actually be done with BASH_VERSION unset:
  
      BASH_VERSION= . "$CONFIG"
  
  At the very least, a check should be done whether bash is the user's
- login shell. In combination with the modified shebang line, it can  be
- done thus:
+ login shell. It can  be done thus:
  
      [ "$SHELL" != "/bin/bash" ] && BASH_VERSION=
-     . "$CONFIG"
+     . "$CONFIG"
  
  utilizing `$SHELL` given it stores the login shell
  (http://unix.stackexchange.com/questions/45458/why-shell-doesnt-change-
  when-i-run-new-shell).

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to lightdm in Ubuntu.
https://bugs.launchpad.net/bugs/1482641

Title:
  Lightdm (and GDM) source .profile as bash, indirectly sourcing .bashrc

Status in gdm package in Ubuntu:
  New
Status in lightdm package in Ubuntu:
  New

Bug description:
  The fix for https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/678421
  leads to `.profile` being sourced by bash instead of dash. This leads
  `.bashrc` being sourced indirectly via .profile. IMHO, `.bashrc`
  should not be sourced even *once* in this situation. I suggest that
  sourcing .profile actually be done with BASH_VERSION unset:

      BASH_VERSION= . "$CONFIG"

  At the very least, a check should be done whether bash is the user's
  login shell. It can  be done thus:

      [ "$SHELL" != "/bin/bash" ] && BASH_VERSION=
      . "$CONFIG"

  utilizing `$SHELL` given it stores the login shell
  (http://unix.stackexchange.com/questions/45458/why-shell-doesnt-
  change-when-i-run-new-shell).

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/1482641/+subscriptions


References