【问题标题】:How to get tab completion for $PATH as an argument in a bash script?如何将 $PATH 的制表符完成作为 bash 脚本中的参数?
【发布时间】:2020-09-20 07:23:19
【问题描述】:

我有一个非常简单的脚本,它使用 Vulkan API 对应用程序进行基准测试。它接受来自$1 的参数:

基准应用:

#!/usr/bin/env bash

VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=position=top-right $1

要使用它,我运行benchmark-app example-game。它将接受参数并按预期执行,但是当使用制表符完成时,它会在./ 中查找而不是$PATH

【问题讨论】:

  • 他……?我猜你的脚本在你的用户下运行?所以它应该有相同的环境。与登录时一样的变量。如果您的用户可以运行$1,那么您的脚本应该没问题。 1 它是否适用于您在$1 中输入的命令的完整路径? 2 调试:添加which "$1" 作为脚本的第一行。它应该为您提供正确的路径。如果没有解决。 3 您可以添加 echo "$PATH",以查看您的脚本使用的 PATH 变量。请更好地解释“使用制表符完成时”,您在尝试什么确切
  • @Nic3500 我想要的是能够键入benchmark-app exa,然后按键盘上的Tab 键并完成benchmark-app example-gamebenchmark-app /usr/bin/exa,然后按 Tab 即可。 benchmark-app example-game 也可以,但参数必须逐字输入。

标签: bash gnu tab-completion


【解决方案1】:

我使用 GNU 的 complete 命令完成了选项卡。我创建了文件/etc/bash_completion.d/benchmark-app 并添加了这一行:complete -F _command benchmark-app

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    相关资源
    最近更新 更多