export not working in my shell script

后端 未结 2 1551
刺人心
刺人心 2020-12-07 13:38

I have two scripts 1.sh and 2.sh.

1.sh is as follows:

#!/bin/sh
variable=\"thisisit\"
export variable

2.sh is as follows:



        
相关标签:
2条回答
  • 2020-12-07 13:47

    export puts a variable in the executing shell's environment so it is passed to processes executed by the script, but not to the process calling the script or any other processes. Try executing

    #!/bin/sh
    FOO=bar
    env | grep '^FOO='
    

    and

    #!/bin/sh
    FOO=bar
    export FOO
    env | grep '^FOO='
    

    to see the effect of export.

    To get the variable from 1.sh to 2.sh, either call 2.sh from 1.sh, or import 1.sh in 2.sh:

    #!/bin/sh
    . ./1.sh
    echo $variable
    
    0 讨论(0)
  • 2020-12-07 14:04

    If you are executing your files like sh 1.sh or ./1.sh Then you are executing it in a sub-shell.

    If you want the changes to be made in your current shell, you could do:

    . 1.sh
    # OR
    source 1.sh
    

    Please consider going through the reference-documentation.

    "When a script is run using source [or .] it runs within the existing shell, any variables created or modified by the script will remain available after the script completes. In contrast if the script is run just as filename, then a separate subshell (with a completely separate set of variables) would be spawned to run the script."

    0 讨论(0)
提交回复
热议问题