qua*_*nta 7 osx bash sudo autocomplete
我正在使用 SaltStack。我想在调用salt命令时自动完成仆从名称。
以下行已添加到~/.bashrc:
complete -o default -o nospace -W "$(sudo ls -1 /var/cache/salt/master/minions)" salt
Run Code Online (Sandbox Code Playgroud)
然后打字?; 我可以看到它按预期工作:salt inTabsalt integration-Tab
$ salt 集成-TabTab 集成-c 集成-u 集成-u2
要与 一起使用sudo,我已添加complete -cf sudo到 中~/.bashrc,但它不起作用:
须藤盐Tab
什么也没回。
我还尝试安装bash_completion并将以下几行添加到~/.bash_profile:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)
但没有运气。
我错过了什么?
更新
哦,我想说的第一件事是有时它有效:
$ sudo salt 集成-TabTab 集成-c 集成-u 集成-u2
有时不会。
所以首先,让我们看看你的 bash_completion 包做了多少。
我该如何检查?这是我的功能:
complete -o default -o nospace -W "$(sudo ls -1 /var/cache/salt/master/minions)" salt
Run Code Online (Sandbox Code Playgroud)
如果您键入
sudo mkdirTabTab,它是否显示目录列表?
是的:
$ sudo mkdir TabTab .FontForge/ .djangopypi2/ .ievms/ .ssh/ .wireshark-etc/
Tob*_*ght -1
sudo除非您使用 请求,否则不会为您提供登录 shell -i。所以你会发现没有它你需要加载系统的补全:
. /etc/bash_completion
Run Code Online (Sandbox Code Playgroud)
如果您使用 运行-i,则将$HOME为~root,因此写入用户的任何内容都~/.bashrc不会被读取。如果您可以将完成的内容与其余部分分开~/.bashrc,请使用.和 来获取它,这应该可以工作。