Ruby中獲取當前指令碼的絕對路徑

2021-04-18 20:29:16 字數 924 閱讀 2413

在ruby 中,以下**可以獲得當前指令碼的絕對路徑:

require 'pathname' puts pathname.new(__file__).realpath

將以上**儲存在test1.rb中,然後放在d盤的根目錄下。測試的時候我們進入c盤,執行ruby d:/test1.rb,控制台會輸出當前指令碼的絕對路徑:d:/test1.rb。

有人可能會問,dir.pwd不是也可以獲取嗎?其實是不行的。dir.pwd獲取的是工作目錄,我理解的工作目錄就是ruby的呼叫目錄,也就是說你獲取的是在哪個目錄下呼叫的指令碼,而不是指令碼在哪個目錄。我們可以做以下實驗,首先建立乙個test2.rb檔案,錄入**如下:

puts  dir.pwd

儲存後,我們把這個檔案也放到d盤根目錄下,然後在cmd命令列下我們進入c盤,(注意,是c盤哦!),然後執行:ruby test2.rb,你認為它會輸出什麼呢,是d:/ 嗎?錯,是c:/ !讓我們來看的更清楚些,在cmd命令列下進入c:/windows/system目錄,執行ruby d:/test2.rb,你會看到輸出的結果是c:/windows/system。這下清楚了吧,你在哪個目錄下呼叫的指令碼,dir.pwd返回的就是哪個目錄,但是這個指令碼所在的真實路徑是沒有關係的。官方的api上寫的是返回工作目錄,我們很容易把它理解成絕對路徑的。

其他的操作方法有:

1、獲得當前執行檔案的檔名:

__file__

2、獲得當前檔案的目錄

file.dirname(__file__)

3、獲得當前執行檔案的完整路徑

require 『pathname』

pathname.new(__file__).realpath

4、獲得當前執行檔案的目錄完整路徑

require 『pathname』 pathname.new(file.dirname(__file__)).realpath

Perl 獲取當前指令碼的絕對路徑

前言 你寫的指令碼 或程式 的應用場景肯定有很多,如 本機登入使用者在程式所在的目錄下執行 本機登入使用者在根目錄下執行 或者是遠端使用者使用ssh呼叫。而此時,你的程式涉及到一些檔案的讀 寫操作,這時就需要以當前程式所在絕對路徑為檔案路徑座標基點 以定位讀 寫檔案的所在,才能成功地讀寫檔案。1.錯...

JS魔法堂 獲取當前指令碼檔案的絕對路徑

一 前言 當寫模組載入器時,獲取當前指令碼檔案的絕對路徑作為基礎路徑是必不可少的一步,下面我們一起來 一下這個問題吧!二 各大瀏覽器的實現方式 a chrome和ff 超簡單的一句足矣!var getcurrabspath function 這裡利用了物件 document.currentscrip...

JS魔法堂 獲取當前指令碼檔案的絕對路徑

一 前言 當寫模組載入器時,獲取當前指令碼檔案的絕對路徑作為基礎路徑是必不可少的一步,下面我們一起來 一下這個問題吧!二 各大瀏覽器的實現方式 a chrome和ff 超簡單的一句足矣!var getcurrabspath function 這裡利用了物件 document.currentscrip...