【发布时间】:2013-01-05 19:49:00
【问题描述】:
如何为 git-shell 创建自定义命令?根据documentation:
当给定-c时,程序以非交互方式执行; 可以是 git receive-pack、git upload-pack、git 之一 upload-archive、cvs 服务器或 COMMAND_DIR 中的命令。外壳是 当没有给出参数时以交互模式启动;在这种情况下, COMMAND_DIR 必须存在,其中的任何可执行文件都可以 调用。
但是,我不确定我是否正确理解了这一点。我创建了一个名为 gituser 的用户,并给了他 /usr/bin/git-shell 作为 shell。我创建了一个名为 git-shell-commands 的目录,并在其中放置了一个名为 'testy' 的脚本,但我无法通过 git-shell 让它运行。
这是我在另一台机器上尝试的:
$ ssh gituser@server.com testy
fatal: unrecognized command 'testy'
请注意,git-shell 正在工作,并且正在响应,它只是找不到我的自定义命令。
这是脚本:
:/home/gituser/git-shell-commands# ls -l -a
total 12
drwxr-xr-x 2 gituser gituser 4096 Jan 22 17:35 .
drwxr-xr-x 4 gituser gituser 4096 Jan 22 13:57 ..
-rwxr-xr-x 1 gituser gituser 26 Jan 22 13:58 testy
:/home/gituser/git-shell-commands# ./testy
hello!
:/home/sodigit/git-shell-commands# cat testy
echo "hello!"
我做错了什么?如何使用 git-shell 运行自定义命令?
【问题讨论】:
-
你是如何启动 git-shell 的?你定义
COMMAND_DIR了吗? -
我没有定义它。我假设它是 $HOME/git-shell-commands,其中 $HOME 是 gituser 的主目录 (/home/gituser)。我使用 ssh 访问 git-shell,就像上面的例子一样。
-
文档中明确指出脚本需要放在
COMMAND_DIR中。如果你不知道它指向哪个目录,你怎么能在里面放文件呢? -
好吧,文档还指出“COMMAND_DIR 是路径“$HOME/git-shell-commands”。我假设 $HOME 是用户的主目录。但是,我可能错了。如何检查这个 COMMAND_DIR 在哪里?