Linux 持久化由源脚本定义的shell函数或别名
我有一个脚本——在本例中,名为Linux 持久化由源脚本定义的shell函数或别名,linux,bash,shell,Linux,Bash,Shell,我有一个脚本——在本例中,名为myCommand.sh——当使用.myCommand.sh源代码时,它在本地shell中定义了一个名为sayit的命令 但是,现在,当我运行时。myCommand.sh,命令sayit仅在当前终端窗口中定义 即使在没有手动调用的情况下重新启动终端,我如何使其工作?chmod+x是一种永久性操作。运行/mycommand.sh,或/path/to/mycommand.sh,或将脚本放在路径中的文件夹中,例如~/bin/。myCommand.sh将仅在当前终端中工作。
myCommand.sh
——当使用.myCommand.sh
源代码时,它在本地shell中定义了一个名为sayit
的命令
但是,现在,当我运行时。myCommand.sh
,命令sayit
仅在当前终端窗口中定义
即使在没有手动调用的情况下重新启动终端,我如何使其工作?
chmod+x
是一种永久性操作。运行/mycommand.sh
,或/path/to/mycommand.sh
,或将脚本放在路径中的文件夹中,例如~/bin/
。myCommand.sh将仅在当前终端中工作。将此脚本放在某个位置,并在.bash_配置文件中添加相同的位置
示例:
文件:/home/myuser/.myCommand/myCommand.sh
Bash配置文件条目:
PATH=$JAVA\u HOME/bin:$JAVA\u HOME/jre/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:$PATH:/HOME/.myCommand:。假设在
myCommand.sh
中有以下内容:
sayit() { echo "Hello World"; }
#!/bin/sh
echo "Hello World"
…或更糟糕/更脆弱的替代方案:
alias sayit='echo "Hello World"'
…然后您可以通过两种方式将其永久化:
- 创建一个名为
的脚本,其中包含sayit
。这可能如下所示:echo“Hello World”
sayit() { echo "Hello World"; }
#!/bin/sh echo "Hello World"
- 将源代码myCommand.sh中的命令添加到点文件中(即
)。这意味着您将附加以下内容:~/.bashrc
…或其特定于bash的等效文件:. /path/to/myCommand.sh
…到您的source /path/to/myCommand.sh
文件~/.bashrc
chmod+x
即可运行。somescript
或源代码
;它只适用于作为外部进程运行的命令,而不是源代码到shell中。当我执行.myCommand时,它可以工作,但只适用于当前终端。将脚本放在路径中的文件夹中,例如~/bin/“。myCommand.sh
——正如OP报告他们正在做的那样——正在将内容来源于活动shell——OP的命令可能被定义为shell函数、别名或类似的命令。您在这里提出的建议只有在执行脚本直接运行所需命令时才有效,而不是在活动shell中定义它们以供以后使用。