Bug 1667008 - Duplicate user PATH entries in $PATH
Summary: Duplicate user PATH entries in $PATH
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: bash
Version: 8.0
Hardware: Unspecified
OS: Linux
unspecified
low
Target Milestone: rc
: 8.0
Assignee: Siteshwar Vashisht
QA Contact: BaseOS QE - Apps
URL:
Whiteboard:
Depends On: 1652639
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-01-17 08:41 UTC by Siteshwar Vashisht
Modified: 2020-01-02 16:03 UTC (History)
0 users

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 1652639
Environment:
Last Closed:
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)

Description Siteshwar Vashisht 2019-01-17 08:41:31 UTC
+++ This bug was initially created as a clone of Bug #1652639 +++

Description of problem:
Since https://src.fedoraproject.org/rpms/bash/c/739b272e5f5d10cf27a847a44d09eb7f4b6ec89b?branch=f29 , User PATH is prepended to $PATH every time ~/.bashrc is sourced. This includes the login phase and when the user runs bash inside the session. The result is two duplicate user PATH entries in $PATH, gets even more with nested bash sessions. 
This does no harm, but may confuse users.

Version-Release number of selected component (if applicable):
bash-4.4.23-5.fc29.x86_64

How reproducible:
Always

Steps to Reproduce:
1. Open a graphical session with startx or a DM. In my case it's KDE/SDDM. Not tested on gdm/GNOME(Wayland)
2. Open a terminal emulator (must not use d-bus activation)
3. echo $PATH

Actual results:
$ echo $PATH
/home/username/.local/bin:/home/username/bin:/home/username/.local/bin:/home/username/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin

Expected results:
There shouldn't be duplicate entries in $PATH.

Additional info:
Generally I think it's still better to set $PATH inside ~/.bash_profile. This should work for all applications inside the session's scope unit, as long as default shell is bash, but not for systemd user services.
Another partial fix for display managers is to check whether bash is interactive before sourcing ~/.bashrc in ~/.bash_profile, since /etc/X11/xinit/Xsession runs bash non-interactively.

--- Additional comment from Siteshwar Vashisht on 2018-11-23 16:03:05 UTC ---

You can modify your .bashrc to:

if ! [[ $PATH =~ "$HOME/.local/bin:$HOME/bin:" ]]; then PATH="$HOME/.local/bin:$HOME/bin:$PATH"; fi

I will fix it through an update.

--- Additional comment from Chris Tao on 2018-11-24 09:02:53 UTC ---

(In reply to Siteshwar Vashisht from comment #1)
> You can modify your .bashrc to:
> 
> if ! [[ $PATH =~ "$HOME/.local/bin:$HOME/bin:" ]]; then
> PATH="$HOME/.local/bin:$HOME/bin:$PATH"; fi
> 
> I will fix it through an update.

After modifying .bashrc and restarting bash, duplicate PATH is gone. 
Thank you for the fix.

--- Additional comment from Siteshwar Vashisht on 2019-01-10 09:09:19 UTC ---

Review please https://src.fedoraproject.org/rpms/bash/pull-request/10 ?

--- Additional comment from Fedora Update System on 2019-01-17 08:40:38 UTC ---

bash-4.4.23-6.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2019-9d006f6254


Note You need to log in before you can comment on or make changes to this bug.