到目前为止,我已经了解了有关java.library.path属性的以下内容:
(如果我误解了上述任何一项,请纠正我)
我的动机:
我想修改Java应用程序从我设置的框架中看到的java.library.path的值来调用Java应用程序.我想这样做不是通过直接设置java.library.path属性,而是通过修改它映射到的系统路径变量.我想要一个干净的方法来做这个没有丑陋的操作系统特定代码或尽可能省略边缘情况.
我的问题:
有没有办法要求本地Java实现java.library.path映射到哪个环境变量?
然后,在shell脚本中,我将能够写出以下内容:
path_var = get_library_path_variable # the magic function I want to call
${path_var} = /my/custom/path:${${path_var}}
Run Code Online (Sandbox Code Playgroud) 如果我正在编写shell脚本并且我想"获取"一些外部(c-)shell脚本来设置我的环境,我可以像这样调用:
source /file/I/want/to/source.cshRun Code Online (Sandbox Code Playgroud)
我想用ruby脚本替换执行此操作的shell脚本.我可以在ruby脚本中做类似的事情吗?
更新:
刚试用test_script.csh:
#!/bin/csh
setenv HAPPYTIMES TrueRun Code Online (Sandbox Code Playgroud)
...和test_script.rb:
#!/usr/bin/env ruby
system "~/test_script.csh"
system "echo $HAPPYTIMES"Run Code Online (Sandbox Code Playgroud)
可悲的是,到目前为止还没有任何快乐.
我有一个充满ruby脚本的目录用于常见任务,我已经开始积累一组常见变量和方法,我发现自己在每个新脚本中定义.改进这一步骤的下一步似乎是创建一个文件(例如,commonstuff.rb)并从其他脚本中"需要"该文件,以便公共变量和方法在所有地方都可用并且只定义一次.
一个不起作用的简单尝试:
commonstuff.rb
username=ENV['USER']
home_dir_path=ENV['HOME']
def print_and_execute(command, &block)
puts command
process_io = IO.popen(command + "2>&1")
while(line=process_io.gets)
if (block != nil)
yield line
else
puts line
STDOUT.flush
end
end
endRun Code Online (Sandbox Code Playgroud)
script1.rb
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/common_stuff'
puts home_dir_path # Fail
print_and_execute "date" # FailRun Code Online (Sandbox Code Playgroud)
我已经使用了ruby库和框架,但我目前的环境中没有任何可用的.我只是直接的红宝石,我对一些在这里运作良好的基本习语有点生疏,或者看起来对红宝石专家来说是正确的.
任何帮助赞赏!