导出脚本功能

导出脚本功能

我正在尝试实施找到的解决方案这里。然而,一位同事建议不要将函数直接添加到 .bash_profile 或 .bashrc 文件中,而是将自定义脚本放在自己的文件中并软链接到 /usr/bin 中。我已经这样做了(并使脚本可执行),但它似乎不起作用。我认为必须导出这些功能,但我不确定如何导出。

如何导出自定义脚本函数以便它们位于路径上?例如:所以我可以像任何其他命令一样运行它们。

编辑#1:

我发现(并尝试过),但它似乎仍然不起作用,我不确定我现在做错了什么......

答案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

也许我需要将每个函数放在它自己的文件中,并以函数名作为文件名,并将代码从函数中分离出来?我想我可以有一个脚本,其中多个函数导出到路径......

相关内容