答案1
这里有两个完全不同的事情在起作用。 Shell 脚本是可以直接运行的可执行文件,因此如果您创建了该文件/usr/bin/foo
(您不应该手动把东西放在那里,但无论如何),你将能够运行foo
并且它会执行:
$ cat /usr/bin/foo
#!/bin/bash
echo One
$ foo
One
函数也可以通过名称执行,但需要首先定义它们,当您直接将它们键入 shell 中,或者使用source
或.
命令获取包含它们的文件时,就会发生这种情况:
$ function bar() {echo Two;}
$ bar
Two
$ cat functions.sh
function baz() {echo Three;}
$ baz
command not found: baz
$ . functions.sh
$ baz
Three
在路径上的文件中定义函数不会执行任何操作;您仍然需要在登录脚本中获取这些文件。如果你想制作单独的脚本,你不妨将它们命名为与它们的函数相同的名称,并完全删除该函数,这样你就可以通过名称调用脚本
答案2
脚本无法将定义推送给您。您必须通过采购将它们从脚本中引入。这是通过. /usr/bin/cdjs
(如果脚本位于 /usr/bin/cdjs 中)完成的。之后,您可以cdjs
随时使用。
您的同事可能建议改为制作函数脚本。该cdjs
函数可以制作为脚本,但为了使其工作,您必须在每次使用它时获取脚本,如下所示:. cd2js
。
为此,您将拥有一个/usr/bin/cd2js
可执行文件并包含:
$/bin/sh
cd /domains/"$1"/applications/j2ee-apps
如果您经常在该目录中执行有限数量的操作,您可能需要创建多个脚本来为您执行这些操作。
所以你可以有一个像这样的脚本:
#!/bin/sh
ls /domains/"$1"/applications/j2ee-apps/
并将其放在/usr/bin/lsj2
.然后您就可以lsj2 some-domain-1
随时查看内容。
答案3
也许我需要将每个函数放在它自己的文件中,并以函数名作为文件名,并将代码从函数中分离出来?我想我可以有一个脚本,其中多个函数导出到路径......