Xdm var/log/xdm.log

Per Hedeland per at hedeland.org
Sat May 2 10:13:50 UTC 2020


On 2020-05-02 09:51, Polytropon wrote:
> On Sat, 2 May 2020 09:09:35 +0200, Per Hedeland wrote:
>> On 2020-05-01 15:17, Polytropon wrote:
>>> On Fri, 1 May 2020 07:56:27 -0400, Robert Huff wrote:
>>>>
>>>> Polytropon writes:
>>>>
>>>>>  > >  > Ok, I will add xsession.
>>>>>  > >
>>>>>  > >  NB: .xsession (the dot is significant).
>>>>>  > >
>>>>>  > >  Or you can do the following, as you said you already have
>>>>>  > >  a .xinitrc (which xdm will ignore, as mentioned):
>>>>>  > >
>>>>>  > >  	% cp .xinitrc .xsession
>>>>>  >
>>>>>  > 	From my home directory:
>>>>>  >
>>>>>  > lrwxrwxr-x   1 huff  huff         8 May  1 01:19 .xsession -> .xinitrc
>>>>>  >
>>>>>  > 	This implies you want the same environment from both.
>>>>>
>>>>>  Will usually work, but doesn't keep C shell initialization
>>>>>  (environmental variables, aliases, settings), which might
>>>>>  not be a problem if you're not using the C shell for dialog
>>>>>  sessions or if you concentrate on GUI entirely. :-)
>>>>
>>>> 	Once	I start X, I do pretty much everything within it.  For the
>>>> rest I console-switch.
>>>> 	(And the first line of the file is "#! /bin/sh".  :-) )
>>>> 	What is there that one might wish to do that can't be handled out
>>>> of an xterm?
>>>
>>> If I remember correctly, if you use xdm, and start an X terminal
>>> inside the X session, your settings from .cshrc will not be in
>>> effect due to the fact that the invoked shell is not a login shell.
>>
>> I believe you are confusing .cshrc with .login - .cshrc is read by
>> *every* instance of [t]csh unless the -f option is used, while .login
>> is indeed only read by login shells (and thus pretty much useless).
>
> Yes, that's what "man csh" says... but decades ago it didn't
> work.

Well, "it" as in "every instance reads .cshrc" has definitely worked
at least since the csh version shipped with 4.1BSD (1981) when I
started using it, and continued to do so across the tcsh that was a
set of source patches to csh, and the "merged" open-source version in
FreeBSD. But you may of course have things *in* your .cshrc that
e.g. makes most of it be skipped if it has already been read.

> I remember that when using xdm with .xsession to launch
> the user components of X, whenever I opened a terminal, my
> C shell settings from .cshrc (!) weren't included, that's why
> I invented the "cascading approach" for .xsession and .xinitrc.

As I already wrote, "shell settings" can't be inherited across an
exec, as you reported having in your .xsession:

	#!/bin/csh
	source ~/.cshrc
	exec ~/.xinitrc

> That was a long time ago, but it still works.

Or, whatever it was that you did that *actually* fixed your problem
still works.:-) Sourcing .cshrc in a csh script also works of course,
but the csh instance running the script has already sourced it (unless
it was started with -f), so it isn't likely to be useful.

> I don't know how other display managers handle things. I did
> not need that for slim, and I got rid of gdm quite quickly
> because it didn't care for _any_ user configuration file (no
> .xsession, no .xinitrc, no nothing).

I've only ever "actively" used xdm, haven't seen a need for anything
else.

>> FWIW, while I use tcsh as my interactive shell, both my .xsession and
>> .xinitrc have #!/bin/sh (as all scripts should:-), [...]
>
> I think the #!/bin/sh in .xinitrc is just for the reader, because
> the manual of startx says that it will use /bin/sh for execution
> if .xinitrc regardless. However, it's not wrong and it doesn't
> do any harm. Similarly, there is no mention that this file has
> to be executable (+x attribute set), but again, it's probably
> not wronger than the #!/bin/sh line... :-)

The execute permissions are certainly required (and shebang strongly
recommended) if you want to 'exec' .xinitrc from .xsession, though.

--Per


More information about the freebsd-questions mailing list