Julia 朱莉娅:不带单引号的美元登录命令
我正在尝试从Julia运行以下命令:Julia 朱莉娅:不带单引号的美元登录命令,julia,Julia,我正在尝试从Julia运行以下命令: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/.julia/v0.3/Smile/deps/downloads 当我按原样运行它时,它试图用局部变量替换$LD_LIBRARY_PATH。 当我转义$时,它会在命令周围加引号,从而使命令无效 julia> cmd = `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tim/.julia/v0.3/Smi
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/.julia/v0.3/Smile/deps/downloads
当我按原样运行它时,它试图用局部变量替换$LD_LIBRARY_PATH。
当我转义$
时,它会在命令周围加引号,从而使命令无效
julia> cmd = `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tim/.julia/v0.3/Smile/deps/downloads`
ERROR: LD_LIBRARY_PATH not defined
julia> cmd = `export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/home/tim/.julia/v0.3/Smile/deps/downloads`
`export 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tim/.julia/v0.3/Smile/deps/downloads'`
我希望以类似以下的形式运行该命令:
run(`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$newpath`)
如何正确处理美元符号
多谢各位
*注意:将命令直接粘贴到终端并运行它确实有效在Julia中,backticks并不完全等同于在shell中运行相应的命令。不能使用
$
插入环境变量(尽管$(get(ENV,“varname”和“”)
应与shell的行为匹配),并且export
是一个内置的shell,而不是命令,因此我认为您无法运行它。此外,即使反勾号被去掉,export
也只会更改子shell的环境,而不会更改调用进程
您应该能够从Julia中将LD_LIBRARY_PATH
设置为:
ENV["LD_LIBRARY_PATH"] = "$(get(ENV, "LD_LIBRARY_PATH", "")):$newpath"
但如果可能,您应该避免这种情况。如果您的目的是
ccall
特定库,您可以将库路径直接传递到ccall
,如果您不知道完整路径的前进方向,可以使用find_library
,如您在注释中所示。如果您需要设置LD_library_路径,因为库需要要加载其他库,我不确定是否有更好的方法,但请注意,LD\u LIBRARY\u PATH
是特定于平台的。您可以先dlopen
依赖库,但我还没有测试过它。跳过它。。=\$LD…
。不知道julia,但因为您正在执行一个外部shell来进行导出调用时,shell将解析/扩展该变量。对其进行转义可以防止这种情况发生。不,我确实尝试过对其进行转义。我会在问题中进一步说明这一点。在相关注释中,可以这样做:global const LIB_SMILE=find_library([“libsmilejl”],[pathtoad])
而不是弄乱LD_library_路径。