【问题标题】:Executables in subfolder in path路径中子文件夹中的可执行文件
【发布时间】:2016-11-05 12:36:23
【问题描述】:

我希望将我的可执行文件放在子文件夹中:

    $ tree
    .
    ├── bin
    │   ├── exec.py
    │   ├── method1
    │   │   ├── exec1.py
    │   │   └── exec2.py
    │   └── method2
    │       ├── exec1.py
    │       └── exec2.py

如果我在 PATH 中包含 bin/ 文件夹,有没有办法从我的 shell 脚本(位于另一个目录中)访问可执行文件,例如

$ method1/exec1.py arg1 arg2

上面的命令报错(没有这样的文件或目录),但是

$ exec.py arg1 arg2

有效,因为它不在子文件夹中。

请告知我如何在子文件夹中组织可执行文件。谢谢。

【问题讨论】:

    标签: python bash path directory-structure project-structure


    【解决方案1】:

    感谢@Андрей Беньковский 的详尽回答。知道命令名称不应包含斜杠很有用。因为我对不同的方法有相同的 exec 文件名,所以我不能把它们放在一起。我的解决方案是使用变量 BINROOT=bin/ 并使用

    调用命令
        $BINROOT/method1/exec1.py arg1 arg2
    

    【讨论】:

      【解决方案2】:

      正如 here 所记录的,bash shell(可能还有大多数其他 shell)仅在命令名称不包含斜杠时在 $PATH 上查找命令。

      有几种方法可以解决这个问题:

      1. 您可以在命令中创建一个包含 symbolic links 的文件夹并将该文件夹添加到 $PATH。
      2. 您可以将子文件夹添加到 $PATH。如果有很多子文件夹你可以do it automatically
      3. 您可以将脚本当前目录更改为您的 bin。临时更改当前目录的简单方法是use subshells
      4. 当然,您也可以尝试使用不同的 shell,以不同的方式执行命令搜索。抱歉,我不知道在哪里可以找到,如果你真的需要,你必须自己谷歌一下。

      【讨论】:

        猜你喜欢
        • 2020-12-11
        • 2017-04-16
        • 2014-11-24
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 2010-12-02
        相关资源
        最近更新 更多