linux不在当前目录查找命令

worktile 其他 26

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Linux在当前目录查找命令的规则是先在当前目录查找,如果找不到,再去系统默认的系统路径中查找。所以如果当前目录没有要执行的命令,就会发生”Command not found”的错误。

    为了解决这个问题,可以采取以下几种方法:

    1. 使用绝对路径:可以直接使用命令的绝对路径来执行,无论当前目录在哪里,都可以找到相应的命令。例如,要执行”/bin/ls”命令,可以在任何目录下使用这个绝对路径。

    2. 使用相对路径:如果执行的命令在当前目录的子目录中,可以使用相对路径来执行。例如,如果当前目录的子目录中有一个”bin”目录,其中包含一个”ls”命令,可以使用”./bin/ls”来执行。

    3. 添加命令到系统路径:可以将要执行的命令所在的目录添加到系统路径中,这样无论在哪个目录下执行都可以找到相应的命令。可以通过修改环境变量来实现,比如将命令所在目录添加到PATH变量中。

    4. 使用别名:可以通过给命令设置别名的方式来解决这个问题。例如,可以将”ls”命令设置成别名”cl”,然后无论在哪个目录下执行”cl”都可以找到”ls”命令。

    总结起来,Linux不在当前目录查找命令时可以通过使用绝对路径、相对路径、添加命令到系统路径或使用别名的方法来解决问题。选择哪种方法取决于实际情况和个人偏好。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux系统中,如果我们在终端中输入一个命令,系统会按照特定的顺序去查找该命令。这个顺序通常是:首先,在当前目录中查找是否存在该命令的可执行文件;如果没有找到,则会在系统预定义的一系列目录中查找。这一系列目录通常被称为“环境变量PATH”。

    通常,在Linux中,PATH环境变量包含了一系列目录,用冒号分隔。例如:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

    当我们在终端中输入一个命令时,系统会按照 PATH 中的目录顺序进行查找。如果在某个目录中找到了该命令的可执行文件,则会执行该文件。如果在所有目录中都没有找到该命令,则会提示“command not found”。

    那么,如果一个命令没有在当前目录中找到,我们可以采取以下几种方法来解决:

    1. 输入命令的绝对路径:无论当前目录在哪里,都可以通过输入命令的绝对路径来执行该命令。例如,如果要执行一个可执行文件 `/usr/local/bin/command`,则可以直接在终端中输入 `/usr/local/bin/command` 来执行。

    2. 切换目录:如果一个命令在当前目录中已经存在,但是找不到,可能是因为我们所处的目录不在环境变量 PATH 中。这时,我们可以使用 `cd` 命令切换到命令所在的目录,然后再执行命令。

    3. 修改环境变量 PATH:如果我们希望在当前目录中执行命令时,系统也能够找到该命令,可以将当前目录添加到环境变量 PATH 中。可以使用以下命令将当前目录添加到 PATH 中:

    export PATH=$PATH:.

    这样,当我们在当前目录中执行一个命令时,系统会先在当前目录中查找,如果找到了该命令的可执行文件,则会执行它。注意,这种方式会使得系统更容易受到安全威胁,因为恶意文件可能会以命令的形式存在于当前目录中。

    4. 使用绝对路径或另一个已知路径:如果我们知道某个命令在哪个目录下,可以直接使用该目录的绝对路径或者另一个已知路径来执行该命令。

    5. 更新系统:如果某个命令确实不存在于当前目录中,并且无法在系统的其他路径中找到,那么可能是因为该命令并未安装在系统中。此时,我们可以尝试更新系统,以获得该命令的最新版本,并确保它在环境变量 PATH 中可用。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux中,如果输入一个命令,系统会按照一定的顺序在指定的目录中查找该命令的可执行文件。默认情况下,系统会首先在当前目录下查找该命令,如果找不到,会继续在系统预定义的目录中查找。

    然而,有时我们希望在当前目录中执行一个不在当前目录下的命令,或者禁止在当前目录中查找命令。下面介绍在Linux中不在当前目录查找命令的方法。

    ### 1. 使用绝对路径

    一个常见的方法是使用命令的绝对路径来执行命令。在Linux中,每个命令都有一个存储位置,可以通过绝对路径来指定该命令的位置。例如,要执行/usr/bin目录下的ls命令,可以直接输入/usr/bin/ls来执行。

    这种方法可以确保只执行指定目录下的命令,而不会在当前目录下查找命令。

    ### 2. 使用相对路径

    除了使用绝对路径,还可以使用相对路径来执行命令。相对路径是相对于当前目录的路径。例如,当前目录是/home/user,要执行/usr/bin目录下的ls命令,可以输入../../usr/bin/ls来执行。

    同样,这种方法也可以确保只执行指定目录下的命令,而不会在当前目录下查找命令。

    ### 3. 使用./限制当前目录

    另一种方法是在命令前面加上./来限制只在当前目录中查找命令。例如,当前目录中有一个命令文件叫做hello,要执行该命令,可以输入./hello来执行。

    这种方法只适用于当前目录下的命令文件,而不会查找系统预定义的目录。

    ### 4. 修改环境变量

    Linux系统中有一个环境变量叫做PATH,该变量存储着系统的搜索路径。当输入一个命令时,系统会到PATH中的各个目录中查找该命令的可执行文件。

    如果希望禁止在当前目录中查找命令,可以将当前目录从PATH中删除。可以通过以下命令实现:

    “`
    export PATH=$(echo $PATH | tr : ‘\n’ | grep -v “$(pwd)” | tr ‘\n’ :)
    “`

    这个命令会将当前目录从PATH中删除,并重新设置PATH的值。

    需要注意的是,这种修改只对当前的终端会话有效,如果想要永久修改PATH,还需要将上述命令添加到用户登陆脚本(如.bashrc)中。

    总结来说,要在Linux中不在当前目录查找命令,可以使用绝对路径、相对路径、使用./限制当前目录,或者修改环境变量来实现。每种方法都有其适用的场景,具体选择取决于实际需求。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部