Tuesday, April 27, 2021

Re: .profile not being loaded (ksh) when opening shell in X

On 2021-04-26, tetrahedra@danwin1210.me <tetrahedra@danwin1210.me> wrote:
> I have some custom additions to my $PATH. They're defined in ~/.profile
> and they are correctly loaded when I log in from a text console.
>
> When I log in to X (cwm) and open a terminal window, $PATH does not
> contain the entries.
>
> I tried `chmod +x` on my .profile but that didn't help.
>
> Both the text console and the X terminal window are using ksh.
>
> When I call `/bin/ksh -l` then the resulting shell contains the correct
> additions to $PATH.
>
> It looks like the custom $PATH is not being passed from the login shell
> on downwards, since ~/.profile is only read by a login shell.

Seems that your terminal in X is not configured to run a login shell.
By default that is done for xterm via .Xdefaults in a new user's profile
directory (copied from /etc/skel) but if you use a different terminal
or have modified these files, that won't be used.

> ~/.kshrc is (according to ksh(1)) read by every spawning shell, but I
> don't see any documentation or examples on the Internet where someone
> defined their $PATH in ~/.kshrc ...

That is only if ENV is set.

> What's the correct way to set $PATH and have it stick no matter where
> and when the shell is spawned?

If it's just PATH or some other environment variable, setting it for
the relevant class in /etc/login.conf is one option. But probably
simpler to configure your X terminal to run login shells.

No comments:

Post a Comment