Thread: [PROPOSAL] Make PSQLVAR on \getenv opitional
Hi pgsql hackers, I was testing the new psql command \getenv introduced on commit 33d3eeadb2 and from a user perspective, I think that would be nice if the PSQLVAR parameter were optional, therefore when it is only necessary to view the value of the environment variable, the user just run \getenv, for example:\getenv PATH/usr/local/sbin:/usr/local/bin:/usr/binAnd when it is necessary to assign the environment variable in a variable, the user could execute like this:\getenv PATH myvar\echo :myvar/usr/local/sbin:/usr/local/bin:/usr/binFor this flexibility the order of parameters would need to be reversed, instead of \getenv PSQLVAR ENVVAR would be \getenv ENVVAR PSQLVAR.What do you guys think? I'm not a C expert but if this proposal is interesting I can write a patch.
This is my first time sending an email here, so let me know if I doing something wrong.
út 28. 12. 2021 v 19:51 odesílatel Matheus Alcantara <msalcantara.dev@pm.me> napsal:Hi pgsql hackers, I was testing the new psql command \getenv introduced on commit 33d3eeadb2 and from a user perspective, I think that would be nice if the PSQLVAR parameter were optional, therefore when it is only necessary to view the value of the environment variable, the user just run \getenv, for example:\getenv PATH/usr/local/sbin:/usr/local/bin:/usr/binAnd when it is necessary to assign the environment variable in a variable, the user could execute like this:\getenv PATH myvar\echo :myvar/usr/local/sbin:/usr/local/bin:/usr/binFor this flexibility the order of parameters would need to be reversed, instead of \getenv PSQLVAR ENVVAR would be \getenv ENVVAR PSQLVAR.What do you guys think? I'm not a C expert but if this proposal is interesting I can write a patch.it is not consistent with other \g* commands. Maybe a new statement \senv ? But what is the use case? You can just press ^z and inside shell write echo $xxx, and then fg
RegardsPavelThis is my first time sending an email here, so let me know if I doing something wrong.
Matheus Alcantara <msalcantara.dev@pm.me> writes: >> it is not consistent with other \g* commands. Maybe a new statement \senv ? But what is the use case? You can just press^z and inside shell write echo $xxx, and then fg > I think that the basic use case would be just for debugging, instead call \getenv and them \echo, we could just use \getenv.I don't see any other advantages, It would just be to > write fewer commands. I think that ^z and then fg is a good alternative, since this behavior would be inconsistent. You don't even need to do that much. This works fine: postgres=# \! echo $PATH So I'm not convinced that we need another way to spell that. (Admittedly, this probably doesn't work on Windows, but I gather that environment variables are less interesting there.) regards, tom lane
Matheus Alcantara msalcantara.dev@pm.me writes:
it is not consistent with other \g* commands. Maybe a new statement \senv ? But what is the use case? You can just press ^z and inside shell write echo $xxx, and then fg
I think that the basic use case would be just for debugging, instead call \getenv and them \echo, we could just use \getenv. I don't see any other advantages, It would just be to
write fewer commands. I think that ^z and then fg is a good alternative, since this behavior would be inconsistent.
You don't even need to do that much. This works fine:
postgres=# \! echo $PATH
So I'm not convinced that we need another way to spell that.
(Admittedly, this probably doesn't work on Windows, but
I gather that environment variables are less interesting there.)
regards, tom lane
On 12/28/21 14:53, Tom Lane wrote: > Matheus Alcantara <msalcantara.dev@pm.me> writes: >>> it is not consistent with other \g* commands. Maybe a new statement \senv ? But what is the use case? You can just press^z and inside shell write echo $xxx, and then fg >> I think that the basic use case would be just for debugging, instead call \getenv and them \echo, we could just use \getenv.I don't see any other advantages, It would just be to >> write fewer commands. I think that ^z and then fg is a good alternative, since this behavior would be inconsistent. > You don't even need to do that much. This works fine: > > postgres=# \! echo $PATH > > So I'm not convinced that we need another way to spell that. > (Admittedly, this probably doesn't work on Windows, but > I gather that environment variables are less interesting there.) > > I haven't tested, but I'm fairly sure postgres=# \! echo %PATH% would do the trick on Windows. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
## Pavel Stehule (pavel.stehule@gmail.com): > it is not consistent with other \g* commands. Maybe a new statement \senv > ? But what is the use case? You can just press ^z and inside shell write > echo $xxx, and then fg That does not work: backgrounding psql will put you into your original shell, the parent process of psql. Changes in the environment of a process do not change the environment of the parent. Use \! to start a new shell process from psql, which will inherit psql's environment. Regards, Christoph -- Spare Space