英文:
How to read the zsh shell variables
问题
我正在运行我的Go程序,从zsh
中运行。该程序需要读取$fpath
变量。但是尝试在Os.Env
中读取fpath
,但它返回空字符串(即变量似乎不存在)。
我不确定为什么会发生这种情况,因为该变量已经在shell中可用。对此可能的解释是什么?
此外,有没有解决方案可以在Go程序中实现上述功能?
英文:
I am running my go program, from zsh
. The program needs to read $fpath
variables. But trying to read fpath
on Os.Env
, but it is returning empty string(ie. like the variable does not exist).
I am not sure why this should be happening since the variable is already available in the shell. What could be an explanation for this?
Also, any solutions to how can the above be accomplished within the go program?
答案1
得分: 3
你需要将zsh变量的值导出,以便通过环境变量或命令行参数使其对外部进程(如你的Go程序)可用。
在下面的命令中,你可以将/usr/bin/env
替换为你自己的程序。
my_fpath="$fpath" env
my_fpath="$fpath" env | grep my_fpath
英文:
You need to export the values of the zsh variables to make it available to an external process such as your Go program via environment variables or command-line arguments.
In the following commands you can replace /usr/bin/env
by your own program.
my_fpath="$fpath" env
my_fpath="$fpath" env | grep my_fpath
答案2
得分: 2
Go,或者其他任何应用程序,都无法访问zsh变量。我认为你对环境变量感到困惑了。
在你的shell中运行printenv
命令,你会注意到它也不会列出你的fpath
变量。
如果你想让这个变量在应用程序中可用,可以使用shell扩展,在执行应用程序时将其放入环境中;
FPATH="$fpath" printenv
或者将其作为参数传递,并使用flags
包来读取它;
./app -fpath "$fpath"
英文:
Go, or any other application for that matter, can't access zsh variables. I think you are confused with environmental variables.
Run printenv
in your shell and notice it won't list your fpath
variable either.
If you want this variable to be available to an application, use shell expansion to put it in the environment when executing an application;
FPATH="$fpath" printenv
Or pass it as an argument and read it using the flags
-package;
./app -fpath "$fpath"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论