2015-03-30 14 views
2

我不太確定從哪裏開始尋找這個問題的答案。如何打包通過GitHub分發的shell腳本?

(我使用的是Mac)。

反正,我已經運行一些Ruby的東西的命令行工具。基本上,我添加了一個可執行文件到我的用戶目錄中的一個文件夾,添加了允許它在終端中運行的權限。然後,我將可執行文件的路徑添加到我的$PATH變量中。這一切對我來說都很好。我可以像這樣從我的shell中運行它:

$ ngi controller 

我上傳的項目,GitHub上,我也已經給用戶說明下載和使用它以同樣的方式我這樣做,但下載的指令是很令人費解(這是我能想出的最好):

~ $ mkdir .angular_init 
~ $ cd .angular_init 
~/.angular_init $ git clone https://github.com/joshbeam/angular_init.git 
~/.angular_init $ cd angular_init/bin 
~/.angular_init/angular_init/bin $ chmod 755 ngi 
~/.angular_init/angular_init/bin $ export PATH=$PATH:~/.angular_init/angular_init/bin 

顯然,對於像rvmnpm工具,你只要下載奇蹟般地他們,然後他們只是工作。 那麼,如何將我的shell腳本打包爲「可下載」,並將用戶保存在6個shell行的(困惑)工作中呢?

(如果有幫助的話,這裏是link to the repo)。

回答

1

作爲一些簡化點,您不需要雙重嵌套您的目錄,並且您知道git clone將創建它所需的目錄。

所以

git clone https://github.com/joshbeam/angular_init.git .angular_init 

將創建並直接克隆你的回購成.angular_init

您也可以告訴git該文件在回購庫中具有執行權限,因此它可以檢查出這種方式,而不需要人員自己去執行。只需更改權限並再次添加文件,然後進行提交。 (你可以在你的工作目錄中使用git ls-tree HEAD -- <file>來查看git具有哪些權限。)

用git克隆代替前五個步驟。只剩下兩個步驟是完全合理的。

另外,第二步應該是將這種PATH修改行放入適當的shell啓動文件中,而不是直接在當​​前shell會話中運行它。

另外,上面讓你做的是讓人們檢查存儲庫到他們想要的任何地方,然後從那裏鏈接到一個已經在他們的PATH中的位置。

+0

太棒了,謝謝。然而,有幾個問題:首先,我運行git ls-tree HEAD - bin/ngi,第一行的第一部分表示「100755」。我認爲這意味着它有正確的755權限? – 2015-03-30 23:08:36

+0

第二個問題:如果沒有首先設置PATH,用戶不能運行'ngi'(工具),那麼如果用戶甚至不能訪問它,如何設置'ngi'中的PATH變量? ('ngi'是運行Ruby代碼的可執行文件) – 2015-03-30 23:09:27

+0

是的,這意味着回購中的權限爲755。比較另一個文件,你會看到它改爲'100644'。我沒有在'ngi'腳本里面設置'PATH'。我說過,方向應該指示用戶在他們現有的(或者新創建的,如果需要的話)shell啓動文件中進行'PATH'修改,以便將來持續使用。而不是在當前shell會話中設置'PATH',而不是在其他任何其他會話中使用'PATH'。 – 2015-03-30 23:25:11