Hi,

    You are correct, export COLUMNS does truncate, I had made the mistake of 
replaying the previous execution of ps which was with “axww”.
Something does go wrong once COLUMNS is in the environment, it seems that in 
that case, it can get modified when executing a pipe’d command.

     As the following examples show, we have narrowed this down to two things


  1.  set -a    causes, in certain situation, to be clarified, but the pipe 
below gives us a big hint, the COLUMNS variable to be exported when it should 
NOT be
  2.  COLUMNS gets modified, by the shell, when a command with a ‘|’ is 
processed
  3.  Those two conditions trigger what I saw as a bug in the output of “ps 
ax”.  Now it seems that “ps” is the revealer and not buggy as I suspected at 
some point.

Starting a new bash :

host:/$ export COLUMNS=60
host:/$ ps ax | grep java | head -1
2051669 ?        Sl     0:17 /usr/lib/jvm/java-17-openjdk-am
host:/$ export COLUMNS=80
host:/$ ps ax | grep java | head -1
2051669 ?        Sl     0:17 /usr/lib/jvm/java-17-openjdk-amd64/bin/java -Xms2g
host:/$ export COLUMNS=120
host:/$ ps ax | grep java | head -1
2051669 ?        Sl     0:17 /usr/lib/jvm/java-17-openjdk-amd64/bin/java -Xms2g 
-Xmx2g -server -XX:+UseG1GC -XX:MaxGCPau
host:/$ ps ax | grep java | head -1           ### next output should be the 
same as previous, but it is truncated
2051669 ?        Sl     0:17 /usr/lib/jvm/java-17-openjdk-amd64/bin/java -Xms2g 
-Xmx2g -server -XX:+Us
host:/$ echo $COLUMNS                # COLUMNS was reset by bash
102

   My conclusion is that the variable COLUMNS gets “reset” when there is a pipe 
in a command and further gets EXPORTED if “set -a” was set before hand :

host:/$ COLUMNS=80
host:/$ echo $COLUMNS
80
host:/$ echo $COLUMNS
80
host:/$ echo $COLUMNS | cat
80
host:/$ echo $COLUMNS
102

    PS1 is :
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

     I would challenge the fact that “set -a” should move COLUMNS to the 
environment when it gets modified by bash itself : not the expected behaviour.
@ Robert Elz, the POSIX definition does put an additional spin to this.  I was 
going by the very short explanation of set -a in the bash man page.
    And I would challenge the fact that COLUMNS gets modified when a command 
with a ‘|’ is executed. There is no way for a bash user or bash script writer 
to expect such a behaviour in unforeseen circumstances. Also, it basically 
makes “set -a” too dangerous to use, so why bother implementing it if it 
shouldn’t be used ?  That last bit is maybe a bit of a stretch, but you met my 
meaning.

  I do believe that this must be considered as a bug as it breaks scripts which 
otherwise work perfectly.  I added the following line in a file which is 
getting source’d to define variables.  I was not aware that the caller had set 
“-a”.  In fact, scripts should not be so vulnerable to a change to a bash 
variable made by the caller. ( I did describe a work-around using “echo $-“ 
within a $( command ) in my bug report.)

echo $PATH | grep -q  xx/scripts || PATH=${PATH}:/xx/scripts

   I do not believe that adding this to a bash file should cause a failure 
100’s of lines down in a totally different script bought from a third party 
whose use of “set –a” I do not control. I do agree, now that I know about this 
highly unexpected feature, that the third party should have used “ps axww”, but 
then how could they expect the COLUMNS variable to be exported ?  There is no 
testing in the world which would catch a case like this. Hence, I do insist 
that this is a bug.

     The only way to prevent the ‘|’ from modifying COLUMNS is to put the 
command within  $( ) from my empirical testing which is worth what it is worth.

    Not straight forward…

Regards,
Alain Brossard


[cid:ISP-REYL_HubSWS_Col_email_v2_88f4ea19-df87-4cc1-aef3-c28f2127924c.png]<http://www.reyl.com>

Alain BROSSARD
System & Network Administrator
Technology

D +41 22 816 8607<tel:+41%2022%20816%208607>
M +41 79 612 2336<tel:+41%2079%20612%202336>
T +41 22 816 8600<tel:+41%2022%20816%208600>
F +41 22 816 8009<tel:+41%2022%20816%208009>
abross...@reyl.com<mailto:abross...@reyl.com>

REYL & Cie SA
Rue du Rhône 4
1204 Genève
www.reyl.com<https://www.reyl.com>

[cid:SUCCES.TOGETHER_RVB_email_345119d7-0ea9-4fc1-b2e0-c31313eae094.png]
________________________________
The information contained in email messages from REYL & Cie SA may contain 
confidential, proprietary or legally privileged information and is intended 
only for the use of the addressee named above. No confidentiality or privilege 
is waived or lost by any mis-transmission. If you are not the addressee of this 
email message, you must not use, distribute, copy it in any form or take any 
action in reliance on it. If you have received this email message by error, 
please notify us immediately by replying to the message and delete it from your 
computer. If there are any attachments to the email messages that you received 
in error, kindly refrain from opening them and do not download or save them to 
your computer. In accordance with industry standards and practices, and to 
comply with our legal and regulatory retention requirement REYL & Cie SA 
monitors and retains email messages for a period of time in accordance with its 
policies, guidelines and procedures. Email transmission cannot be guaranteed to 
be secured or error-free as information could be intercepted, corrupted, lost, 
destroyed, arrive late or incomplete, or contain viruses. REYL & Cie SA is not 
liable for any unproper or incomplete transmission of the information contained 
in email messages or for any delay it their receipt. Some publications included 
in email message may be advertising material (pursuant to Art. 68 of the 
Federal Act on Financial Services, Financial Services Act of 15 June 2018) for 
financial services or for financial instruments. For any financial instruments 
mentioned, we will be happy to provide you with additional documents at any 
time and free of charge, such as a key information document pursuant to Art. 58 
et seq. of the Financial Services Act, a prospectus pursuant to Art. 35 et seq. 
of the Financial Services Act or an equivalent foreign product information 
sheet, e.g. a basic information sheet pursuant to Regulation EU 1286/2014 for 
packaged investment products for retail investors and insurance investment 
products (PRIIPS KID). We consider your inquiries about our products and 
services as a request to contact you and send you relevant information.
From: Oğuz <oguzismailuy...@gmail.com>
Sent: Thursday, June 13, 2024 5:34 PM
To: Alain BROSSARD <abross...@reyl.com>
Cc: bug-bash@gnu.org
Subject: Re: it, soRE: set -a leads to truncated output from ps

On Thursday, June 13, 2024, Alain BROSSARD <abrossard@ reyl. com> wrote: export 
COLUMNS=60 ps ax | grep java The output isn’t truncated. It is on my machine. 
You must have something in your PS1/PROMPT_COMMAND interfering. It is critical 
that
ZjQcmQRYFpfptBannerStart
This Message Is From an Untrusted Sender


This message was sent from outside of REYL & CIE.
You have not previously corresponded with this sender.

    Report Suspicious  
<https://us-phishalarm-ewt.proofpoint.com/EWT/v1/HLcdjgI!MxEYukYE4uvJJ9SGuyrtmUtyxgDqcQpsSwickQko1rmmj40QVQAosVPivujK9u2RmQs9wNgZw070CenJrPwcZBqh8n_qzfSFUUvxznCKPMf6Gmaw_OFTc1yEWg$>
   ‌



ZjQcmQRYFpfptBannerEnd
On Thursday, June 13, 2024, Alain BROSSARD 
<abross...@reyl.com<mailto:abross...@reyl.com>> wrote:
export COLUMNS=60
ps ax | grep java

    The output isn’t truncated.
It is on my machine. You must have something in your PS1/PROMPT_COMMAND 
interfering.
It is critical that application’s behaviour do not get impacted by the shell 
used to call them.
Even more reason to use `ps axww' instead of  `ps ax'.
What do you think ?
I think there's at least one Bash bug involved here.


--
Oğuz

  • set -a leads... Alain BROSSARD via Bug reports for the GNU Bourne Again SHell
    • Re: set... alex xmb sw ratchev
      • RE:... Alain BROSSARD via Bug reports for the GNU Bourne Again SHell
        • ... alex xmb sw ratchev
          • ... alex xmb sw ratchev
        • ... Oğuz
          • ... alex xmb sw ratchev
          • ... Alain BROSSARD via Bug reports for the GNU Bourne Again SHell
            • ... Oğuz
              • ... Alain BROSSARD via Bug reports for the GNU Bourne Again SHell
                • ... Greg Wooledge
                • ... alex xmb sw ratchev
          • ... Robert Elz
    • Re: set... Andreas Schwab
      • RE:... Alain BROSSARD via Bug reports for the GNU Bourne Again SHell
        • ... Chet Ramey
          • ... Oğuz
          • ... Alain BROSSARD
            • ... Greg Wooledge
              • ... Alain BROSSARD via Bug reports for the GNU Bourne Again SHell

Reply via email to