2012-01-25 82 views
1

我在Windows上使用msysgit,並寫了一個簡單的shell腳本,我想使用。我將.sh文件所在的文件夾添加到我的Windows計算機的PATH變量中,但是當我想使用我的腳本時,我不得不輸入rd.sh而不是簡單的rd。使用/添加shell腳本到msysgit

如何通過引用其名稱rd而不是帶有.sh文件擴展名(rd.sh)的完整文件名來使用它?

+0

@shellter: msysgit提供了類似Unix的bash shell環境 –

+0

@KeithThompson:謝謝你的信息。 – shellter

回答

5

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%)使用shbash來啓動.sh文件。

如果您希望能夠從任一環境運行相同的腳本,您可以創建一個符號鏈接,以便在模擬的類Unix環境中識別。例如,如果rd.sh$HOME/bin,那麼這個:

ln -s $HOME/bin/rd.sh $HOME/bin/rd 

將創建符號鏈接合適。 (你可以做rdrd.sh副本,但後來變成一個不會適用於其他。)

如果你只需要在bash的運行它,只是把它rd而非rd.sh;正如我所提到的,就bash而言,.sh擴展只是名稱的一部分,並沒有特別的意義。這是#!行,而不是.sh擴展,告訴bash如何執行腳本。

(當然,嚴格來說,它不是bash的一個處理#!實際的Unix或Linux系統,它是由內核來處理,我不知道確切的機制是什麼下msysgit。)

+0

感謝您提供有用的信息。它已經解釋了很多。 – inreflection7

+0

我爲此搜索太久了。謝謝你的詳細解釋。 –

1

通常情況下,您可以通過在PATHEXT環境變量中添加擴展.sh來完成此操作。 PATHEXT是一個分號分隔的擴展名列表,可視爲可執行文件。

但是,由於windows並不支持shell腳本(顯然不是批處理文件等),我不能100%確定這是否可行。