Решено Ошибка в BASH табуляции с переменной - PullRequest
0 голосов
/ 08 апреля 2020

Я сталкиваюсь с ошибкой при завершении табуляции BASH, когда переменная является частью имени файла или пути. Переменная указывает на определенный путь, и эта переменная генерируется во время загрузки. Из-за ошибки сценария или, возможно, преднамеренного, в нем есть двойное «//», но обычно такое двойное / не имеет значения.

Допустим, переменная называется $ LIVESOURCE и указывает на / mnt / sda1 / DIRECTORY1 // directory2 - он не имеет окончания "/", но всегда ссылается на папку, а не на файл. В этом пути есть другие файлы и папки, к которым я хочу получить доступ: либо читать файлы, либо копировать файлы в папку (ы).

Поэтому я делаю следующее: Я набираю, например,

$ ls $LIVESOURCE/rootcopy/home/username/.moonchild\ productions/pale\ moon/

и когда курсор находится в конце напечатанной строки, я нажимаю [TAB] или [TAB] [TAB], чтобы увидеть, какие файлы и папки находятся в целевой папке. Но по какой-то причине BASH меняет вышеприведенное после однократного нажатия [TAB] на

$ ls \$LIVESOURCE/rootcopy/home/username/.moonchild\ productions/pale\ moon/

, что, конечно, приводит к ошибке. Почему BASH делает это?

Когда я набираю следующее

$ cp /usr/local/bin/dummyfile $LIVESOURCE/rootcopy/usr/local/bin/

и нажимаю [TAB] BASH, это не изменение части $ LIVESOURCE на \ $ LIVESOURCE - но здесь $ LIVESOURCE находится не в начале ввода CLI. Вместо этого BASH перечисляет файлы и папки, которые должны быть найдены в целевом каталоге - как и должно быть.

My BASH - V5.0.11 (1) x86-64 Slackware.

(Я выполнил поиск "bash переменная завершения табуляции", но не нашел подходящих топи c, которые бы отвечали на мой вопрос)

...