如何打包 shell 脚本以在 GitHub 上分发?
How do I package a shell script for distribution over GitHub?
我不太确定从哪里开始搜索这个问题的答案。
(我正在使用 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
显然,对于像 rvm
和 npm
这样的工具,您只需神奇地下载它们,然后它们就可以正常工作了。 那么我怎样才能将我的 shell 脚本打包成简单的 "downloadable",并为用户节省 6 shell 行的(令人困惑的)工作量?
(如果有帮助,这里是 link to the repo)。
作为一些简化点,您不需要双重嵌套目录,如您所知,git clone
将创建它需要的目录。
所以
git clone https://github.com/joshbeam/angular_init.git .angular_init
将创建您的存储库并将其直接克隆到 .angular_init
。
您还可以告诉 git 该文件在存储库中具有执行权限,因此它会以这种方式签出,而不需要人们自己 chmod
它。只需更改权限并再次添加文件,然后提交即可。 (您可以在您的工作目录中使用 git ls-tree HEAD -- <file>
来查看 git 具有的权限。)
这仅用 git 克隆替换了前五个步骤。只剩下两个完全合理的步骤。
此外,第二步应该是将那种 PATH
修改行放入适当的 shell 启动文件而不是 运行 直接放在当前 shell 会话。
或者,上面让你做的是让人们将存储库签出到他们想要的任何地方,然后 link 从那里直接到他们 PATH
中已经存在的位置。
我不太确定从哪里开始搜索这个问题的答案。
(我正在使用 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
显然,对于像 rvm
和 npm
这样的工具,您只需神奇地下载它们,然后它们就可以正常工作了。 那么我怎样才能将我的 shell 脚本打包成简单的 "downloadable",并为用户节省 6 shell 行的(令人困惑的)工作量?
(如果有帮助,这里是 link to the repo)。
作为一些简化点,您不需要双重嵌套目录,如您所知,git clone
将创建它需要的目录。
所以
git clone https://github.com/joshbeam/angular_init.git .angular_init
将创建您的存储库并将其直接克隆到 .angular_init
。
您还可以告诉 git 该文件在存储库中具有执行权限,因此它会以这种方式签出,而不需要人们自己 chmod
它。只需更改权限并再次添加文件,然后提交即可。 (您可以在您的工作目录中使用 git ls-tree HEAD -- <file>
来查看 git 具有的权限。)
这仅用 git 克隆替换了前五个步骤。只剩下两个完全合理的步骤。
此外,第二步应该是将那种 PATH
修改行放入适当的 shell 启动文件而不是 运行 直接放在当前 shell 会话。
或者,上面让你做的是让人们将存储库签出到他们想要的任何地方,然后 link 从那里直接到他们 PATH
中已经存在的位置。