我的控制台无法识别 bash 脚本中的 ic 命令。
我需要运行此命令来进行一些计算,但我收到了此消息ic: command not found
。
我怎样才能在 bash 中定义它?
答案1
您收到的错误消息表明该命令ic
不存在于环境变量包含的任何目录中PATH
。
要查找 bash 搜索可执行文件的目录,请在命令行中输入以下内容
echo $PATH
如果您知道该ic
命令在您的文件系统上的位置,那么您可以在 bash 脚本中指定 ic 的完整路径,这样就不必使用 PATH 环境变量来找到它。
因此假设 ic 在目录中,/usr/local/bin
那么在你的 bash 脚本中你可以通过输入来执行 ic。
/usr/local/bin/ic
而不是
ic
答案2
该消息ic: command not found.
表明未找到命令 ic。换句话说,它不在您的 shell 查找命令的位置之一中。
通常这是因为该命令位于当前目录中,而该目录(与 Windows 中的默认目录不同)不在默认搜索路径中。
如果是这种情况,那么您可以通过提供完整路径来启动它,或者将其所在的路径添加到搜索路径中。
例子:
/usr/local/bin/ic
在文件夹 /usr/local/bin/ 中启动一个名为 ic 的程序/opt/bin/ic
在文件夹 /opt/bin/ 中启动一个名为 ic 的程序./ic
在当前目录中启动一个名为 ic 的程序。
注意,默认情况下,它不在路径中。如果将其添加到路径中,请将其设为最后一项。例如,使用PATH=:$PATH:.
和不是PATH=.:$PATH
.($PATH 是旧路径,列是分隔符,点是当前目录)。
如果 ic 是一个脚本,那么您也可以通过调用它的解释器来启动它。
例如,如果 ic 是一个 bash 脚本,那么你可以使用/usr/local/bin/bash ic
如果 ic 是一个脚本并且当前目录已经在您的路径中,则检查以下三件事:
- 该计划(ic)有其 eXecute 位已设置。(如果不是这种情况则
chmod +x ic
)。 - 脚本有一个 shebang,指定了正确的解释器。shebang
位于#!
脚本的第一行。它必须是第一行。其上方不能有空行。对于 bash 脚本,正确的条目是#!/usr/local/bin/env bash
.(#!/usr/local/bin/bash
如果您的 bash 位于 /usr/local/bin 中,它也会起作用,但如果您移动到其他系统,而 bash 安装在不同位置,则需要编辑该文件。env 程序(始终安装在相同位置)解决了该问题。) - 如果它是一个脚本并且有一个 shebang,请确保它有一个正确的行尾。当在 Windows 上编辑脚本时,如果使用的行尾与 unices 不同,则经常会出现这种情况。(Windows 上为 ^J^M,unix 上为 ^J,Mac 上为 ^M)。结果是 env 可能正在寻找一个名为 的程序
bash^M
,当有帮助时,这可能并不明显(例如clippy 风格很有帮助编辑决定帮助通过不显示 ^M 来通知您)。
答案3
ic
现在被称为nickle
,正如解释的那样这里。您可以从nickle.org,但如果你可以使用发行版的包管理器,那就更好了,因为我认为它有一些依赖项。例如,在 Ubuntu 系统上,你可以使用
sudo apt-get install nickle
然后,您可以更改脚本以使用nickle
,ic
或者链接nickle
到ic
,例如,
ln -s /usr/bin/nickle ~/bin/ic