Ruby符号链接在OS X中不起作用

时间:2012-06-29 23:24:09

标签: ruby macos symlink

以下脚本按预期创建符号链接,但永远无法找到原始文件。有人可以告诉我为什么吗?它们似乎是有效的符号链接,因为它们在OS X中注册为别名,File.symlink?一旦创建就返回true。

 #!/usr/bin/env ruby

 case ARGV.first when 'link'
   file = ARGV[1]

   if !File.exist?(file)
     puts "Unfortunately, \"#{file}\" was not found."
     exit 0
   end

   bin = "/usr/local/bin/"

   if !File.directory?(bin)
     puts "#{bin} does not exist!"
     puts "creating #{bin}..."
     system "mkdir -p #{bin}"
   end

   if File.extname(file).empty?
     if File.symlink?(bin + file)
       puts "Unfortunately, \"#{bin + file}\" already exists."
       exit 0
     end

     name = bin + file

     puts "Symlinking #{file} to #{name}..."
     File.symlink(file, name)
     system "chmod +x #{name}"
   else
     name = file.split(File.extname(file))
     name = bin + name.first

     if File.symlink?(name)
       puts "Unfortunately, \"#{name}\" already exists."
       exit 0
     end

     puts "Symlinking #{file} to #{name}..."
     File.symlink(file, name)
     system "chmod +x #{name}"
   end
 else
   puts "try: bin link <file>"
 end

脚本以下列方式运行:

 ruby script.rb link myfile.rb

1 个答案:

答案 0 :(得分:1)

回答我自己的问题,替换

的实例
File.symlink(file, name) 

File.symlink(File.expand_path(file), name) 

工作得很好。