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?
#Debian #Debian11 #foss #floss #libre_software #applications #desktop #gui #nix #flatpak #flatpaks #gnu #linux #opensource #open_source #tmux #bash #profile #shell #terminal
.profile
is only sourced when the shell is a login shell. Most shells started by terminal emulators under a GUI are not login shells.Depending on how you connect to a machine, you may or may not get a login shell. Through SSH or similar may well get you a login shell. Using the text-console (usually through Ctrl+Alt+F1 through F6 on modern distros) also yields a login shell.
Try putting things in your
.bashrc
instead. That one is sourced regardless of login shell or not.If you’re not using bash, substitute the relevant file.
.zshrc
and.config/fish
are the main two.Thanks, that works with the flatpaks. However, it doesn’t seem to work with nix packages. I mean rofi doesn’t detect the .desktop files for packages installed using nix.
Do you have anything else your
~/.bashrc
that is perhaps overwriting thePATH
?One thing you can do is just add
echo
s to your.profile
to see if it is getting sourced and what the state ofPATH
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.
I had a similar issue some time ago, not sure which distro it was. The solution was to rename the
.profile
to.bash_profile
:)Thanks for the response. But in my case, even that does not work as well.
Does your .bashrc actually source .bash_profile? Add
[ ! -f "~/.bash_profile" ] || . "~/.bash_profile"
(.bash_profile doesn’t exist or source it) to the end if not.Since
.bashrc
is executed for all non-login shells, it shouldn’t really source.profile
, which is only meant for login shells, and might trigger expensive activity. (.profile
might source.bashrc
, but that`s fine.)Adding those lines to .bashrc helped with flatpaks but not with nix.
You’ve probably already checked it out but make sure you’ve got only one of
.profile
,.bash_profile
,.bashprofile
. bash will only execute one of them in case there’s more than one (not sure which one off the top of my head.)I only have .profile. Actually adding those lines as to .bashrc as suggested by @palordrolap@kbin.social helped for the flatpak commands. But the issue with .desktop files for programs installed using nix still persists.
Did you check ownership and permissions for .profile?
Changed it allow execution for the owner. Still no results. Tried with both .profile and .bash_profile.
It’s .bash_profile, not .profile
Thanks for the response. But that does not work as well.
May be relevant, but it sounds like the behavior you see is not completely accounted for.
Thanks, I will check it out. 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:—
date >> ~/profile-execution-log-top.txt echo $PATH >> ~/profile-execution-log-top.txt
to the top of
.profile
, and:—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 differentPATH
s. 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.