Мне кажется, что Bash игнорирует =
и часть перед ним при заполнении имени файла, вероятно, для поддержки длинных опций в стиле GNU, таких как --some-file=<filename>
.
Например, если файлы foofoo
и foobar
существуют, ввод echo asdf=f<tab>
приведет к автозаполнению префикса foo
и отображению двух имен файлов.
С файлом с именем asdf=xyz
echo asdf=a<tab>
автоматически дополнит его в части после =
, дав echo asdf=asdf\=xyz
.
Так что да, вам нужно экранировать =
в Bash при автозаполнении имен файлов . Это не проблема для результирующей команды, однако в этом смысле она не имеет особого значения для оболочки.
С другой стороны, тильда в именах файлов, вероятно, не является проблемой. Если у вас нет пользователя с именем =+temp=+test.sh=
, его следует оставить как -.
Информация о моей системе... Я использую Kubuntu с KDE Plasma v :5.18.5. Вот что я сделал.
Я установил «gcc» из окна терминала. «gcc» — это программа, которая переводит текстовый код языка C в машинный код.
Я создал текстовый файл с именем «start -guake.c», а затем написал код в этом текстовом документе (расширение должно быть «.c», а не «.txt» ).
После этого в терминале я изменил каталог на местоположение текстового файла и скомпилировал его с помощью «gcc» (в командной строке напишите gcc, а затем путь к текстовому файлу, содержащему код :"gcc /path/to/file.c" ). Это действие привело к созданию файла с именем "a.out" (. Вы найдете его в той же папке, где находится ваш текстовый файл, содержащий код ), и это фактическая программа.
Я переименовал файл из "a.out" в "start -guake" и переместил его в каталог "/bin/".
Оттуда я перешел в меню приложений, открыл «автозапуск» и добавил туда только что созданную программу.
После всех этих действий я перезагрузил компьютер. Это код:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void waitTenSeconds();
int main(){
waitTenSeconds();
system("guake");
return 0;
}
void waitTenSeconds(){
system("sleep 10");
}
Надеюсь, это помогло. Удачи !
Причина этого, на мой взгляд, заключается в том, что задача запуска запускается до того, как система будет полностью готова сделать параметры прозрачности доступными для этого окна. Или как-то так рано загружает программу, что конфиг для гуаке еще не прочитан. Заставить его выглядеть так, как будто он запускается другим пользователем без установленных параметров прозрачности.
Я могу подтвердить слова Михаила Прокопеца. Я решил проблему, написав небольшую программу на C, которая запускает терминал через 10 секунд после загрузки среды рабочего стола, и я запускал ее при запуске с помощью Autorun. Для меня проблема заключалась в том, что я не мог запустить скрипт при запуске по какой-то причине, поэтому я прибегнул к C.