【问题标题】:linux - how to run/execute a file in the command line without the ./linux - 如何在没有./的命令行中运行/执行文件
【发布时间】:2016-02-07 22:16:14
【问题描述】:

假设文件 'foo.sh' 拥有所有权限,我只想在当前目录中运行该文件:

#> ./foo.sh 

只需输入名称,我可以在哪里/在哪里更改某些内容以执行文件(任何具有权限的文件):

#>foo.sh

我的想法是我总是可以这样做(在当前目录中)。如果./file.sh 是执行文件的有效方式,file.sh 也可以。不打算在全球范围内运行file.sh

【问题讨论】:

  • 编辑您的 "$PATH" 变量以包含此文件所在的目录。
  • 在你当前的shell中你可以做PATH="${PATH};/new/dir/with/file" && export PATH(这是针对Linux的)
  • 您应该知道默认行为是有原因的。不要从当前目录运行这些东西是安全的,因为这样任何人都可以将像“cd”这样的恶意文件放到你的任何$HOME 文件夹中,它将被调用而不是原始命令。 unix.stackexchange.com/questions/65700/…

标签: linux file execute


【解决方案1】:

如果您想执行特定于本地用户的此文件,则创建~/bin 目录,将文件放入其中并将此路径附加到您的$PATH 环境中。 ':' 是分隔符检查以下链接。

http://www.cyberciti.biz/faq/unix-linux-adding-path/

但如果你想全局访问它。然后将您的文件放在 /usr/bin 或 /usr/local/bin 中,然后检查这些路径是否已在 $PATH 中注册。添加您的权限。打开新终端尝试调用文件。

【讨论】:

    【解决方案2】:

    您也可以将脚本复制到/usr/local/bin 目录下,用于用户程序。

    【讨论】:

    • 好吧,如果您要开始随机复制到文件系统,那么/usr/local/bin 不应该更合适吗?
    • @DavidC.Rankin 你是对的! /usr/local/bin 用于普通用户程序。我修改了答案
    • 这个想法是在任何目录中都这样做,而不仅仅是一个特定的目录!
    【解决方案3】:

    编辑您的"$PATH" 变量以包含此文件所在的目录。 例如,这是我的"$PATH" 的一部分:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/rany /bin

    它包括以下目录:

    • /usr/local/bin
    • /usr/bin
    • /bin
    • /usr/local/sbin
    • /usr/sbin
    • /sbin
    • /home/rany/bin

    将可执行脚本放入这些目录之一后,您只需在命令行中输入其名称即可执行它。

    这样做后,我建议您阅读此Bash FAQ 以获取更多信息。

    【讨论】:

    • 这个想法是在任何目录中都这样做,而不仅仅是一个特定的目录!
    • 这正是将要发生的事情,与当前的当前目录无关。
    • 任何文件在哪里?在当前目录中?如果是,则将. 添加到您的PATH
    • ...注意这种方法是不安全的。查看@Microfed 对您的问题帖子的评论。
    【解决方案4】:

    您可以将. 添加到您的PATH 中,这样shell 将执行您当前工作目录中的任何内容。比如:

    export PATH=$PATH:.
    

    在此之后,您可以通过键入运行foo.sh 程序

    $ foo.sh
    

    【讨论】:

      【解决方案5】:

      为什么不直接将'.' 添加到路径中:export PATH=.:$PATH

      上面将运行当前目录中的任何内容。如果您想让它始终存在,请将上述行添加到您的个人资料中。

      请注意,对于某些 shell,您可能需要运行两个命令:

      PATH=.:$PATH
      export PATH
      

      【讨论】:

        猜你喜欢
        • 2018-02-26
        • 2013-11-23
        • 1970-01-01
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 2020-09-13
        相关资源
        最近更新 更多