我读《Linux圣经第10版》,第 3 章:使用 shell,第 70 页。有提示部分:
如果要添加自己的命令或 shell 脚本,请将它们放在主目录中的 bin 目录中(例如对于名为 cn 的用户来说为 /home/cn/bin)。在某些 Linux 系统中,此目录会自动添加到您的路径中,但在其他 Linux 系统上您可能需要创建该目录或将其添加到您的 PATH 中。因此,只要您将该命令添加到具有执行权限的 bin 中,您只需在 shell 提示符下键入命令名称即可开始使用它。要使命令可供所有用户使用,请将它们添加到/usr/local/bin
我正在运行 Fedora Linux 35 工作站版并尝试创建我的自定义命令。我已经创建了〜/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...
.我已经改变了.bashrcPATH 行到PATH=$PATH:~/home/bin; export PATH;
,重新加载终端会话并始终得到相同的结果。
请解释一下,为什么它对我不起作用?如何创建自己的命令并使其仅通过名称即可访问?谢谢。
答案1
该PATH
变量向您的 shell 指示可执行文件可能存在的位置。因此,如果您将脚本放在kek.sh
下~/bin
,那么您需要添加~/bin
到PATH
.但看来您已添加~/home/bin/kek
到您的PATH
替代品中。
另一个问题是脚本被命名为kek.sh
,但是您尝试执行的命令是kek
。您需要更改名称,kek.sh
或者kek
需要kek.sh
按照命令运行。
放在#!/usr/bin/bash
脚本的顶部(称为 shebang)向系统指示应该在脚本上使用什么解释器。据我所知,在末尾用 .sh 命名它不会影响 shell 执行脚本的方式,因此kek
只要在之后有适当的解释器,简单地命名它就不会改变它的执行方式#!