我有一个需要运行shell脚本的命令。外壳文件位于gem根文件夹中。当我执行完整路径时,一切正常,但无法获取根路径。
从project_creator.rb
开始运行脚本
我用来测试
system("sh /Users/user_name/folder/gem-project/lib/gem/create.sh" + param)
尝试过:
system("sh ../lib/gem/create.sh" + param)
答案 0 :(得分:1)
使用__dir__
获取Ruby文件的目录。来自docs:
返回文件目录的规范化绝对路径 从中调用此方法。这意味着路径中的符号链接是 解决。如果
__FILE__
为nil,则返回nil。返回值等于 到File.dirname(File.realpath(__FILE__))
因此,在您的示例中,您可能会执行以下操作:
script = File.join(__dir__, '..', 'create.sh')
exit_code = system("sh #{script")
您还可以使用system
设置cwd(当前工作目录):
system("create.sh", chdir: __dir__)
或者:
Dir.chdir(__dir__) { system('create.sh') }