小编Cha*_*lie的帖子

我可以找出当前平台上java.library.path映射到的变量吗?

到目前为止,我已经了解了有关java.library.path属性的以下内容:

  • 它在加载本机库时使用,而不是java类
  • 其默认值取决于操作系统:
    • 在Windows上,它映射到PATH
    • 在Linux上,它映射到LD_LIBRARY_PATH
    • 在OS X上,它映射到DYLD_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)

java platform-independence java.library.path

26
推荐指数
2
解决办法
4万
查看次数

源shell脚本进入ruby脚本中的环境

如果我正在编写shell脚本并且我想"获取"一些外部(c-)shell脚本来设置我的环境,我可以像这样调用:

source /file/I/want/to/source.csh
Run Code Online (Sandbox Code Playgroud)

我想用ruby脚本替换执行此操作的shell脚本.我可以在ruby脚本中做类似的事情吗?

更新:

刚试用test_script.csh:

#!/bin/csh

setenv HAPPYTIMES True
Run 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 shell environment scripting

7
推荐指数
2
解决办法
1万
查看次数

Ruby:在一组脚本中共享公共变量和方法

我有一个充满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
end
Run 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"   # Fail
Run Code Online (Sandbox Code Playgroud)

我已经使用了ruby库和框架,但我目前的环境中没有任何可用的.我只是直接的红宝石,我对一些在这里运作良好的基本习语有点生疏,或者看起来对红宝石专家来说是正确的.

任何帮助赞赏!

ruby

2
推荐指数
1
解决办法
2490
查看次数