我在Windows上使用msysgit,並寫了一個簡單的shell腳本,我想使用。我將.sh文件所在的文件夾添加到我的Windows計算機的PATH變量中,但是當我想使用我的腳本時,我不得不輸入rd.sh而不是簡單的rd。使用/添加shell腳本到msysgit
如何通過引用其名稱rd而不是帶有.sh文件擴展名(rd.sh)的完整文件名來使用它?
我在Windows上使用msysgit,並寫了一個簡單的shell腳本,我想使用。我將.sh文件所在的文件夾添加到我的Windows計算機的PATH變量中,但是當我想使用我的腳本時,我不得不輸入rd.sh而不是簡單的rd。使用/添加shell腳本到msysgit
如何通過引用其名稱rd而不是帶有.sh文件擴展名(rd.sh)的完整文件名來使用它?
msysgit提供的shell是bash,它運行在仿真的類Unix環境中。
如果您從bash shell運行腳本,則需要鍵入腳本的名稱,就類Unix環境而言,該腳本的名稱是rd.sh
。在Unix環境中.sh
沒有特別的含義;它只是文件名的最後三個字符。腳本的第一行應該是#!/bin/sh
或#!/bin/bash
;這被稱爲"shebang"。
在另一方面,如果你想從Windows運行它(比如,從一個cmd.exe
命令提示符),然後.sh
擴展使用Windows來確定如何執行它,你可以調用它rd
如果(a)它位於%PATH%
中的目錄中,並且(b)Windows配置爲(使用文件夾選項和/或通過設置%PATHEXT%
)使用sh
或bash
來啓動.sh
文件。
如果您希望能夠從任一環境運行相同的腳本,您可以創建一個符號鏈接,以便在模擬的類Unix環境中識別。例如,如果rd.sh
爲$HOME/bin
,那麼這個:
ln -s $HOME/bin/rd.sh $HOME/bin/rd
將創建符號鏈接合適。 (你可以做rd
的rd.sh
副本,但後來變成一個不會適用於其他。)
如果你只需要在bash的運行它,只是把它rd
而非rd.sh
;正如我所提到的,就bash而言,.sh
擴展只是名稱的一部分,並沒有特別的意義。這是#!
行,而不是.sh
擴展,告訴bash如何執行腳本。
(當然,嚴格來說,它不是bash的一個處理#!
實際的Unix或Linux系統,它是由內核來處理,我不知道確切的機制是什麼下msysgit。)
感謝您提供有用的信息。它已經解釋了很多。 – inreflection7
我爲此搜索太久了。謝謝你的詳細解釋。 –
通常情況下,您可以通過在PATHEXT
環境變量中添加擴展.sh
來完成此操作。 PATHEXT
是一個分號分隔的擴展名列表,可視爲可執行文件。
但是,由於windows並不支持shell腳本(顯然不是批處理文件等),我不能100%確定這是否可行。
@shellter: msysgit提供了類似Unix的bash shell環境 –
@KeithThompson:謝謝你的信息。 – shellter