49

I would like to access the PATH environment variable inside an expect script.

How can I achieve that ?

My actual script is :

#!/usr/bin/expect
set timeout 300
send "echo $PATH\r"

and its ouput is :

can't read "PATH": no such variable
    while executing
"send "echo $PATH\r""
Xavier V.
  • 6,068
  • 6
  • 30
  • 35

4 Answers4

68

Expect is an extension of Tcl. Tcl access enviroment variables via the global env array:

send_user "$env(PATH)\n"
glenn jackman
  • 238,783
  • 38
  • 220
  • 352
17

You can use the global env array by using:

$::env(PATH)    

This notion will also work inside procedures.

Timmah
  • 2,001
  • 19
  • 18
2

If you want to read the target $PATH variable, then you must escape the "$" :

exp_sent -- echo "\$PATH\r"

akiuni
  • 17
  • 1
1

Both $::env(PATH) and $env(PATH) work well. The former is ok also inside other scripts (like expect -c "...", the latter is more "programming style".

ghillo
  • 31
  • 1