开发者

Why won't `system` create and return a variable?

开发者 https://www.devze.com 2023-03-30 18:43 出处:网络
In R, When I run system(\"FOO=\'test123\'\") I would expect system(\"echo $FOO\") to return test123 in the same way that

In R, When I run

system("FOO='test123'")

I would expect

system("echo $FOO")

to return

test123

in the same way that

system("echo $USER") 

returns my username

But it returns nothing. Why is this?


Why would anyone want to do开发者_如何学C this? I was trying to simulate the use of env FOO='test1234 R -vanilla < script.R while writing script.R, which in turn calls system("echo $FOO)`


Each system call will fire up a NEW shell, with its own environment. Variables set in one shell will not carry over to subsequent shells - they'll each be completely independent of each other.


I don't know R, but in other languages system() (at least on Unix-like systems) creates a new shell (/bin/sh) process to execute the command. Your FOO='test123' sets the value of $FOO, but only within that process. Your system("echo $FOO") executes in a new process in which $FOO hasn't been set.

If R has a way to set environment variables internally (setenv, perhaps?), you should use that instead.

EDIT: As @Joshua says in a comment, it's Sys.setenv.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号