受“ 从内部获取 Bash 脚本的源目录”的启发,Ruby 做这件事的方法是什么?
For newer versions of Ruby, try:
__dir__
For older versions of Ruby (< 2.0), the script being run can be found using:
File.dirname(__FILE__)
File.expand_path(File.dirname(__FILE__))
Note: Using __dir__ will return the script path even after a call to Dir.chdir; whereas, using the older syntax may not return the path to the script.
Dir.chdir
ENV["PWD"] seems the simplest way for me under Linux. I don't know of an OS-agnostic way.
As of Ruby 2.0, __dir__ is the simplest way to get this. It
Returns the canonicalized absolute path of the directory of the file from which this method is called.
See the __dir__ documentation, and "Why is __FILE__ uppercase and __dir__ lowercase?".
use __dir__
File.dirname(__FILE__) is not a proper way to get directory where script is stored.
At start working directory and directory with script file is the same, but it may change.
For example:
Dir.chdir('..') do puts __dir__ puts File.expand_path(File.dirname(__FILE__)) end
for script file stored in /Desktop/tmp running it will give output
/Desktop/tmp
/home/mateusz/Desktop/tmp /home/mateusz/Desktop