Ну ... Я так смущен, потому что единственная реальная проблема в моем случае - это разбухание апострофа ('). Ситуация: расширение слова PATH с переменным влиянием, основанное на том, были ли апострофы дополнительным путем или нет. Пример: у меня есть файл exe (называемый «deadbeef») с соответствующими правами exe, этот путь содержит 2 апострофа: /home/mallniya/hard'n'soft/soft/gnu-linux/portable/deadbeef-0.6.0. в эксперименте я помещаю тот же файл в /home/mallniya/hardnsoftaa/soft/gnu-linux/portable/deadbeef-0.6.0. Если я экспортирую первый путь в переменную $ PATH, в bash не будет автозаполнения, но будет во втором случае. Когда я печатаю в терминале первые буквы программы в экспортированной директории dead [TAB] В первом случае завершение не выполняется, но когда я использую TAB с тем же самым словом во втором условии - он работает. Но если я набираю команду «deadbeef» в первом случае вручную - она также выполняется. Более того, обе команды и команды типа говорят, что exe-файл существует в обоих случаях. Так в чем проблема??? Почему bash обрабатывает такие апострофы?
Апоптопы являются особым символом для почти всех оболочек (оболочка - это термин, который относится к интерпретаторам командной строки, которая является программой, которая считывает то, что вы набираете, и сопутствующая вещь).
Короткий ответ: не делайте этого. Как случай для пробелов, лучше избегайте имен файлов со специальным значением или специальных символов в них.
Короткий ответ : если вы хотите использовать апострофы, вам нужно «процитировать» их (используя специальные символы, которые не позволяют интерпретации интерпретатора оболочки). Автозаполнение автоматически цитирует их при необходимости ... Пример:
(0)samsung-romano:~/tmp/try% touch "hard'n'soft"
Один из способов цитирования одинарных кавычек - с двойными кавычками. (И наоборот, хотя и сложнее, чем это).
(0)samsung-romano:~/tmp/try% ls
hard'n'soft
Теперь, если он пишет cat hard и нажимает TAB:
(0)samsung-romano:~/tmp/try% cat hard\'n\'soft
Обратная косая черта - это другая форма цитирования следующего символа.
Чтобы расширить путь с апострофами в нем, добавьте «впереди пути».
cd "/home/mallniya/hard
без проблем расширяется в расширении tab.