Skip Navigation

Bash not sourcing .profile automatically in Debian 11

So, in order to avoid typing "flatpak run", every time I need to run a flatpak program from the terminal, to have gui programs installed using nix appear in my applications menu(rofi, in this case), and to avoid typing the entire path to my .local/bin, I had added the following lines to my .profile:

set PATH so it includes user's private bin if it exists

if [ -d "$HOME/bin" ] ; then export PATH="$HOME/bin:$PATH" fi

set PATH so it includes user's private bin if it exists

if [ -d "$HOME/.local/bin" ] ; then export PATH="$HOME/.local/bin:$PATH" fi

for desktop entries for packages installed using Nix

export XDG_DATA_DIRS="/home/guest/.nix-profile/share:$XDG_DATA_DIRS"

set PATH so it includes user's private bin if it exists

if [ -d "/var/lib/flatpak/exports/bin" ] ; then export PATH="/var/lib/flatpak/exports/bin:$PATH" fi

if [ -d "/.local/share/flatpak/exports/bin" ] ; then export PATH="/.local/share/flatpak/exports/bin:$PATH" fi

However, for some weird reason, I cannot take advantage of the above lines unless I am in a tmux session or I explicitly type the following command:

source .profile

Any ideas on how to fix this?

EDIT: Adding the following line to .xsessionrc fixed the issue (haven't checked for wayland sessions though).

. $HOME/.profile

#Debian #Debian11 #foss #floss #libre_software #applications #desktop #gui #nix #flatpak #flatpaks #gnu #linux #opensource #open_source #tmux #bash #profile #shell #terminal

25 comments
  • Do you have anything else your ~/.bashrc that is perhaps overwriting the PATH?

    One thing you can do is just add echos to your .profile to see if it is getting sourced and what the state of PATH is as it gets loaded. That might help you trace what is happening.

    • Thanks for the response. I will try to as you have advised. Adding those lines to .bashrc helped with flatpaks but not with nix.

  • Are other lines in .profile being executed, or is the whole file ignored? Have you logged out and in again since adding these lines?

    • Thanks for the response. Adding those lines to .bashrc helped with flatpaks but not with nix.

      • But those kinds of initialisations belong in .profile (or, if you're using a weird desktop environment, its own configuration file), particularly if you want .desktop files to work. (In .bashrc, PATH will grow longer in each subshell, which shouldn't cause problems but is wasteful.)

        So, what desktop environment (GNOME, KDE, Cinnamon, etc.) are you using?

        .profile is executed by login shells for the benefit of it and its subshells, and by DEs like Cinnamon for the benefit of .desktop launchers at login.

        So, have you logged out and back in again since adding these lines to .profile?

        And of course, the .profile has to be executed properly for its configuration to take effect, so it`s useful to know if the problem is with those specific lines, or the file as a whole.

        Add:—

         undefined
                date >> ~/profile-execution-log-top.txt
            echo $PATH >> ~/profile-execution-log-top.txt
        
        
          

        to the top of .profile, and:—

         undefined
                date >> ~/profile-execution-log-end.txt
            echo $PATH >> ~/profile-execution-log-end.txt
        
        
          

        to the bottom of .profile (use alternative paths as you see fit) to monitor that activity. You can test this by sourcing .profile but the real test is logging out and in again. Look at the time when you do this so you can correlate each action with each timestamp in the log files. If .profile is executed to completion, you should have two files with matching timestamps but different PATHs. If you don't have a matching timestamp in the "end" log file, there's a problem mid-execution. If neither file is being updated, .profile isn't being executed at all.

25 comments