【问题标题】:Why does Bash show me the whole path of my symlinked script when I tab complete its name?为什么当我使用 Tab 完成其名称时,Bash 会显示我的符号链接脚本的整个路径?
【发布时间】:2019-09-16 12:40:00
【问题描述】:

我正在尝试执行我自己的命令(test.sh 脚本)。

脚本运行良好,我创建了一个软链接(即ln -s /home/test.sh ~/bin/test)。

当我从 RHEL 中的任何地方调用时,它也能正常工作。

但我的问题是下一个:

当我从命令行输入命令的名称 (test) 并按下 Tab 键时,系统会显示我的脚本的完整路径和名称,即$ /home/bin/test,我希望它只显示命令的名称 ($ test)。

这可能吗?我该怎么做?

【问题讨论】:

  • 也许您启用了 readline “expand tilde”选项——您可以通过bind -V | grep 'expand-tilde' 进行检查。如果设置为on,您可以将set expand-tilde off添加到您的~/.inputrc;要检查它是否有效,启动一个新的登录 shell 或重新加载配置(通常使用 Ctrl-X-R),确保上面的 bind 命令现在显示 off,然后尝试制表符完成。
  • 抱歉,但我尝试了“绑定”,而 RHEL 上说我“绑定:未找到”。
  • type bind 的输出是什么?
  • $ bind $ -ksh: bind: not found [No such file or directory]
  • 你的 cmd shell 是ksh,而不是bash。可以切换到bash吗?我认为ksh 没有bind cmd。祝你好运。

标签: linux bash ln


【解决方案1】:

如果您想创建自己的命令并让它们在不浏览其目录的情况下完成制表符,您可以从查看 $PATH 变量开始

echo $PATH

这应该会返回当前路径中的变量列表 如果你想修改你的路径,请点击here

我可能会建议您在 /usr/bin 中的链接的公共位置

某些发行版通常会在其 $PATH 中包含 ~/bin,使用此位置可能会也可能不会解释为什么您的 tab-complete 完成了完整而不只是命令

ln -s /home/test.sh /usr/bin/test

此外,您可能需要考虑个人偏好,例如使用 /opt 目录来保持井井有条

ln -s /opt/scripts/test.sh /usr/bin/test

【讨论】:

  • 好的,谢谢支持。好吧,我的目录在 $PATH 上。我会检查你的建议。谢谢。
【解决方案2】:

您需要的是别名。在 RHEL/CENTOS 系统中,执行以下步骤

  1. vi ~/.bashrc
  2. 添加此行alias test='/home/test.sh'
  3. source ~/.bashrc(可选步骤,除非您希望当前会话具有更新的 bashrc,否则重启/注销/登录不需要此步骤!)

【讨论】:

  • 抱歉,我不明白第 3 步。我执行时收到了下一条消息。 -ksh: .[5]: .[37]: shopt: not found [No such file or directory] ​​-ksh: .[5]: .[38]: hist: -a: unknown option Usage: hist [-lnprs ] [-e editor] [-N num] [first [last] ] -ksh: .[5]: .[40]: shopt: not found [No such file or directory] ​​-ksh: .[5]: . [51]:shopt:未找到[没有这样的文件或目录]
  • 你用的是什么外壳?也可以在步骤 2 中不使用 bash 重试 alias test='/home/test.sh' 还要确保您对文件 test.sh 具有可执行权限,即 chmod +x test.sh
  • 好的,现在可以了。我删除了文本“bash”,并且我已经准确地写了 test.sh 所在的路径。我用“ln”(软链接)指定路径
  • 还请注意,您必须执行第 3 步,以便 bashrc 在当前登录的会话中生效,但将来当您重新启动/启动/注销并登录时,则不需要源!仅供参考
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
相关资源
最近更新 更多