[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Environment variable "PS4" can not be passed to bash script from version

From: Chen, Farrah
Subject: Environment variable "PS4" can not be passed to bash script from version 4.2.46(2)
Date: Tue, 23 Oct 2018 15:20:12 +0000


I found a strange phenomenon, just as the subject, environment variable "PS4" 
cannot be passed to bash script, but any other variable, even self-defined 
variable can be passed to bash script.
My bash version is "GNU bash, version 4.2.46(2)-release 
(x86_64-redhat-linux-gnu)", I downloaded an old version bash-2.0.tar.gz from 
ftp://ftp.gnu.org/gnu/bash/ and installed, no such issue found, "PS4" works 

I tried to set PS4 in /etc/profile, in /etc/bashrc, and export PS4 in terminal, 
just like below, it is correct in current terminal, but cannot be passed to 
bash script.

export PS4='+[#$LINENO ${FUNCNAME[0]}() $BASH_SOURCE] '
export FAN='Myself'

Then source /etc/profile, /etc/bashrc, I also tried to reboot my machine.
In terminal, it works well:

address@hidden ~]# echo $PS4
address@hidden ~]# echo $FAN

But in Bash script, it cannot work, it keeps its original value:
address@hidden ~]# cat test.sh
echo $PS4
echo $FAN

address@hidden ~]# bash test.sh
bash test.sh

Value of variable "Fan" I set in /etc/profile is correct, but $PS4 keeps its 
original value.
I tried many different variable names, such as "PS3", "PS5", all of them work, 
except "PS4".

I found such problem when we update our os from Red-hat 7.3 to Red-hat 7.4,this 
is a long time ago.
Now, I know that on Red-Hat7.0, bash version 4.2.45(1)-release, no such 
problem; on Red-hat 7.5 bash version 4.2.46(2)-release, on Ubuntu 16.04 bash 
version 4.3.48(1)-release, both have this issue.
I assume this issue occurs after version 4.2.46.
PS4 is used by "set -x" to prefix tracing output, it is very useful for our 
work, but it doesn't work now, I'm confused.

Thanks a lot.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]