While I'm not a porter by any means, I'd be fine with either cd ~ or cd /, and 
I'd certainly expect one of them. I guess cd / might be easier, since it can 
happen before the su call, and my guess would be that any regression would be 
minimal.

/Alexander 

On October 28, 2018 5:21:38 PM GMT+01:00, Antoine Jacoutot 
<[email protected]> wrote:
>On Sun, Oct 28, 2018 at 02:23:28PM +0100, Antoine Jacoutot wrote:
>> On Sun, Oct 28, 2018 at 02:20:48PM +0100, Sebastien Marie wrote:
>> > Hi,
>> > 
>> > I just noted a behaviour change with the latest change on rc.subr:
>> > 
>> >    date: 2018/10/16 07:07:05;  author: ajacoutot;  state: Exp; 
>lines: +2 -2;  commitid: y1bnk7UTLXqW0ZFW;
>> >    Change the way we call su(1) in rcexec:
>> >    - drop `-'l' to prevent simulating a full login and running
>/root/.profile
>> >    (prodded by a mail from J Greely)
>> >    - use `-m' to preserve the environment because we now set HOME to
>"/" like
>> >    /etc/rc does; note that we now also clear the environment using
>`env -i' before
>> >    running su(1) which leaves us with only HOME, PATH and SHELL
>> > 
>> >    Committing early to catch regressions fast, if any.
>> >    ok halex@
>> > 
>> > with `su -l', the current directory is changed, whereas with `su
>-m' it
>> > is unaffected.
>> > 
>> > from su man page, about -l:
>> >    and su will change directory to the target login's home directory.
>> > 
>> > 
>> > I found it because pg_ctl will fail if started in a directory it
>can't
>> > read.
>> 
>> Perfect, I was expecting some regression, thanks for reporting.
>> I'll fix it within the next few days.
>
>Thinking about it I wonder if this shouldn't just be "fixed" in the
>rc.d
>script itself.
>Manually running pg_ctl as root (from /root for example) would fail the
>same
>way. So I think it's more an issue with the way pg_ctl works.
>
>Thoughts?
>
>
>> > # pwd
>> > /root
>> > # rcctl start postgresql
>> > postgresql(failed)
>> > # rcctl -d start postgresql
>> > doing _rc_parse_conf
>> > doing _rc_quirks
>> > postgresql_flags empty, using default >-w -l
>/var/postgresql/logfile<
>> > doing _rc_parse_conf /var/run/rc.d/postgresql
>> > doing _rc_quirks
>> > doing rc_check
>> > could not identify current directory: Permission denied
>> > pg_ctl: no server running
>> > postgresql
>> > doing rc_start
>> > doing _rc_wait start
>> > doing rc_check
>> > could not identify current directory: Permission denied
>> > could not identify current directory: Permission denied
>> > could not identify current directory: Permission denied
>> > The program "postgres" is needed by pg_ctl but was not found in the
>> > same directory as "pg_ctl".
>> > Check your installation.
>> > could not identify current directory: Permission denied
>> > pg_ctl: no server running
>> > doing _rc_rm_runfile
>> > (failed)
>> > 
>> > # cd / && rcctl start postgresql
>> > postgresql(ok)
>> > 
>> > 
>> > I am unsure about the correct solution. Maybe just having a `cd /'
>in
>> > rcexec ? it isn't the exact same behaviour (chdir to home
>directory),
>> > but at least / is expected to be readable.
>> > 
>> > thanks.
>> > -- 
>> > Sebastien Marie
>> > 
>> 
>> -- 
>> Antoine

Reply via email to