![](/img/trans.png)
[英]How do I run ruby commands in my bash script without getting “ruby: command not found”
[英]How do I make a Ruby script into a bash command?
我有一個Ruby文件,並將其作為ruby file.rb "parameters"
。 我更喜歡將其作為regtask parameters
運行,而不必每次都包含ruby
和文件名。 我希望它與ls
處於同一級別。 我將如何完成?
編輯文件,確保這是第一行,這樣您的系統就知道如何執行文件:
#!/usr/bin/env ruby
接下來,更改文件的權限以使其可執行:
chmod a+x file.rb
最后,重命名它並將其移動到將要執行的位置,而無需編寫其完整路徑:
mkdir -p ~/bin
mv file.rb ~/bin/regtask
(大多數系統會自動將~/bin
添加到PATH
如果存在);如果不存在,則必須自己在啟動文件中將其添加到PATH
。)
這應該有幫助。如果您遇到任何問題,請告訴我。
http://commandercoriander.net/blog/2013/02/16/making-a-ruby-script-executable/
使Ruby腳本可執行
這是* nix社區中的常識,但是對於許多新開發人員而言,將Ruby腳本轉換為可執行的命令行程序就像魔術一樣。 盡管Internet上還有其他參考,但對於此處的帖子,我將簡要說明如何從直接調用Ruby運行Ruby腳本到僅按其名稱運行腳本。
我們首先假設我們有一個簡單的Ruby腳本,該腳本在命令行上顯示“ hello”。 我們的腳本名稱將為greeter.rb
。 該文件包含一行Ruby代碼:
puts "Hello!"`
要運行腳本,我們必須輸入ruby greeter.rb
。 只輸入greeter
並仍然運行腳本會不會很好呢? 是的,會的。
首先,我們需要告訴Bash如何處理文件,因為我們不會直接將腳本傳遞給Ruby。 為此,我們將以下內容添加到腳本的最上方:
#!/usr/bin/env ruby
puts "Hello!"
第一行是Bash指令,它通過詢問env
命令指定的Ruby當前配置版本,基本上告訴Bash運行文件的程序。 有關env
工作原理的更多信息,請嘗試在命令行中輸入man env
。
其次,我們需要使腳本可執行,這需要更改文件權限。 如果文件權限的概念是新概念,請在此處閱讀。 基本上,文件具有三種類型的權限。 它們可以被讀取,寫入和執行。 大多數文件通常以僅具有讀取和寫入訪問權限開始。 由於我們要執行腳本,因此我們將不得不授予其執行權限。
這樣做只是一個簡單的Bash命令。 在命令行上,導航到包含greeter.rb
文件的目錄。 現在,要檢查權限,請運行:
ls -l greeter.rb
輸出將如下所示:
-rw-r--r-- 1 username staff 13 Feb 16 21:10 greeter.rb
您自己的用戶名將顯示在username
的位置,並且創建日期自然會有所不同,但否則輸出將幾乎相同。 該行的第一部分是啟示性的部分。 字母r
和w
指定讀取和寫入權限。
我們將添加執行權限,該權限將在該行中顯示為x。 要添加執行權限,請運行以下命令。
chmod 755 greeter.rb
現在,如果您使用ls -l greeter.rb
再次檢查文件權限,則輸出應該有所不同。
-rwxr-xr-x 1 username staff 13 Feb 16 21:20 greeter.rb
x
的存在指示文件可以直接運行而無需先調用Ruby。 以下命令應使我們的文件說“你好”。
./greeter.rb
差不多好了。 現在,我們只需要刪除前綴./
,該前綴告訴Bash在當前目錄中尋找greeter.rb
。 不過,在完成最后一步之前,讓我們將文件重命名為greeter
。
mv greeter.rb greeter
現在,最后一步。 每次我們調用Bash程序(例如ls
, chmod
, mv
等)時,Bash都會在預定義的文件夾列表中進行搜索以查找這些程序。 這稱為路徑。 要查看計算機上設置的路徑,請嘗試:
echo "$PATH"
輸出應該是各種系統關鍵文件夾的長字符串。 我們需要將應用程序放入這些文件夾之一。 傳統上,最好將/usr/bin/
和/bin/
類的文件夾保留下來。 相反,任何類型的用戶添加都應放在/usr/local/bin/
。 如果該文件夾不存在,請使用以下命令創建它:
mkdir -p /usr/local/bin/
現在,我們可以將問候語移動到該文件夾中,或者將應用程序保留在原位置,僅在/usr/local/bin/
文件夾中創建一個軟鏈接(或OS X術語中的別名)。 要創建別名,我們將使用ln
命令。 在greeter
所在的目錄中,鍵入:
ln -s $PWD/greeter /usr/local/bin/
注意, $PWD
變量將擴展到我們的greeter腳本的絕對路徑。 現在,我們完成了,我們可以簡單地鍵入greeter
來調用我們的Ruby腳本!
作為注腳,如果上述Bash命令中的任何一個看起來令人困惑,請嘗試通過鍵入man <command>
查找其手冊頁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.