2015-11-10 1 views
4

Я недавно перешел из Scientific Linux 6 в CentOS 7 и у меня возникла проблема с завершением вкладки bash в новой ОС.Bash Tab Завершение имен файлов после аргументов

Версии программного обеспечения

$ cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 

$ uname -r 
3.10.0-229.14.1.el7.x86_64 

$ bash --version 
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu) 

У меня есть Баш скрипт (исполняемый) с именем ./run_prog.sh, который принимает конфигурационный файл в командной строке, используя опцию -c (или длинный --config =).

Пример полной команды:

./run_prog.sh -c=./config/test-new-feature.conf 
## or 
./run_prog.sh --config=./config/test-new-feature.conf 

В предыдущих версиях Баша я был в состоянии закладки полного каталога и имена файлов после -c = конструкта.

Пример ожидаемой вкладки полной (как он работал в SL6):

./run_prog.sh -c=./conf[TAB] 
## completes to 
./run_prog.sh -c=./config/ 
## then type 
./run_prog.sh -c=./config/test-n[TAB] 
## completes to 
./run_prog.sh -c=./config/test-new-feature.conf 

Новая версия Баш в CentOS 7 не завершат любые имена файлов после -c = короткий вариант.

Пример разбитого завершения вкладки в CentOS 7:

./run_prog.sh -c=./conf[TAB] 
## doesn't complete anything 
./run_prog.sh -c=./conf 

Однако, если я отделить -c с пространством завершения файла работает, как ожидалось.

Пример работы автодополнения с пространством:

./run_prog.sh -c ./conf[TAB] 
## completes to 
./run_prog.sh -c ./config/ 
## then type 
./run_prog.sh -c ./config/test-n[TAB] 
## completes to 
./run_prog.sh -c ./config/test-new-feature.conf 

Вопрос

Как я могу получить новую версию Баша на вкладку полных имена файлов, как старая версия Баша сделал?

Редактировать

Этот сценарий имеет длинную версию для короткой опции -c, который --Config. Длинная версия тоже не работает.

./run_prog.sh --config=./conf[TAB] 
## doesn't complete anything 
./run_prog.sh --config=./conf 

Это делает меня вещь, что Баш становится спутать с отсутствием расстояния между опцией переключателя (-c) и значением параметра.

Мой старый каталог Баш-завершения

$ ls -1 /media/old_hd/etc/bash_completion.d/ 
bzr 
createrepo.bash 
dkms 
fcoeadm 
fcoemon 
gdbus-bash-completion.sh 
git 
gvfs-bash-completion.sh 
lldpad 
lldptool 
perf 
phoronix-test-suite 
pk-completion.bash 
rpmdevtools.bash-completion 
subversion 
yum.bash 
yum-utils.bash 

Мой новый каталог bash_completion

$ ls -1 /etc/bash_completion.d/ 
createrepo 
dkms 
fcoeadm 
fcoemon 
genpkgmetadata.py 
git 
lldpad 
lldptool 
mergerepo 
mergerepo.py 
modifyrepo 
modifyrepo.py 
redefine_filedir 
scl.bash 
yum 
yummain.py 
yum-utils.bash 
+1

У меня нет ответа на этот вопрос, но я думал, что я упомяну, что короткий вариант, который принимает '=', довольно необычен. Обычно короткие варианты либо принимают второй аргумент, либо '-cValue', а длинные опции принимают' --long-opt = Value' (или второй аргумент). –

+0

Вы пытались сравнить версии/код завершения bash между двумя версиями? –

+0

@EtanReisner Я попробовал both -c./con[TAB] и --config =./Con [TAB] и не работал. Это заставляет меня задуматься о том, что bash путается из-за нехватки места между переключателем опций и значением. Я обновил оригинальный вопрос, чтобы отразить это. – nick

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^