我阅读了“Linux Bible 第 10 版”,第 3 章:使用 shell,第 70 页。有提示部分:
如果要添加自己的命令或 shell 脚本,请将它们放在主目录的 bin 目录中(例如 /home/cn/bin 用于名为 cn 的用户)。在某些 Linux 系统中,此目录会自动添加到您的路径中,尽管您可能需要创建该目录或将其添加到其他 Linux 系统上的 PATH 中。因此,只要您将命令添加到具有执行权限的 bin 中,您只需在 shell 提示符下键入命令名称即可开始使用它。要使所有用户都可以使用命令,请将它们添加到/usr/local/bin
我正在运行 Fedora Linux 35 Workstation Edition 并尝试创建我的自定义命令。我已经创建了~/bin/kek.sh
#! /usr/bin/bash
echo "Kek"
并转到命令行,进入kek
我的主目录。我得到了bash: kek: command not found...
。之后我去了我的~/.bashrc并在文件末尾添加了以下行
PATH=$PATH:~/home/bin/kek; export PATH;
然后返回~目录,进入后kek
得到相同的bash: kek: command not found...
。我已将.bashrc PATH 行更改为PATH=$PATH:~/home/bin; export PATH;
,重新加载终端会话并始终获得相同的结果。
请解释一下,为什么它对我不起作用?如何创建自己的命令并使其仅通过其名称可访问?谢谢你。
该
PATH
变量向您的 shell 指示可执行文件可能存在的位置。因此,如果您将脚本放置在kek.sh
下~/bin
,那么您需要添加~/bin
到PATH
. 但是,您似乎已添加~/home/bin/kek
到您的PATH
。另一个问题是脚本被命名
kek.sh
,但是您尝试执行的命令是kek
. 您需要更改 to 的名称,kek.sh
或者kek
您需要kek.sh
作为命令运行。放在
#!/usr/bin/bash
脚本的顶部(称为 shebang)向系统指示应该在脚本上使用什么解释器。据我所知,最后用 .sh 命名它不会影响 shell 如何执行脚本,所以kek
只要在之后有适当的解释器,简单地命名它就不会改变它的执行方式#!