Настройки прозрачности для моего выпадающего терминала не загружаются при запуске

Мне кажется, что Bash игнорирует =и часть перед ним при заполнении имени файла, вероятно, для поддержки длинных опций в стиле GNU, таких как --some-file=<filename>.

Например, если файлы foofooи foobarсуществуют, ввод echo asdf=f<tab>приведет к автозаполнению префикса fooи отображению двух имен файлов.

С файлом с именем asdf=xyzecho asdf=a<tab>автоматически дополнит его в части после =, дав echo asdf=asdf\=xyz.

Так что да, вам нужно экранировать =в Bash при автозаполнении имен файлов . Это не проблема для результирующей команды, однако в этом смысле она не имеет особого значения для оболочки.

С другой стороны, тильда в именах файлов, вероятно, не является проблемой. Если у вас нет пользователя с именем =+temp=+test.sh=, его следует оставить как -.

0
19.03.2021, 11:34
3 ответа

Информация о моей системе... Я использую Kubuntu с KDE Plasma v :5.18.5. Вот что я сделал.

  1. Я установил «gcc» из окна терминала. «gcc» — это программа, которая переводит текстовый код языка C в машинный код.

  2. Я создал текстовый файл с именем «start -guake.c», а затем написал код в этом текстовом документе (расширение должно быть «.c», а не «.txt» ).

  3. После этого в терминале я изменил каталог на местоположение текстового файла и скомпилировал его с помощью «gcc» (в командной строке напишите gcc, а затем путь к текстовому файлу, содержащему код :"gcc /path/to/file.c" ). Это действие привело к созданию файла с именем "a.out" (. Вы найдете его в той же папке, где находится ваш текстовый файл, содержащий код ), и это фактическая программа.

  4. Я переименовал файл из "a.out" в "start -guake" и переместил его в каталог "/bin/".

  5. Оттуда я перешел в меню приложений, открыл «автозапуск» и добавил туда только что созданную программу.

  6. После всех этих действий я перезагрузил компьютер. Это код:

     #include <stdlib.h>
     #include <stdio.h> 
     #include <string.h>
    
     void waitTenSeconds();
    
     int main(){
         waitTenSeconds();
         system("guake");
         return 0;
     }
    
     void waitTenSeconds(){
         system("sleep 10");
     }
    

Надеюсь, это помогло. Удачи !

1
28.04.2021, 23:23

Причина этого, на мой взгляд, заключается в том, что задача запуска запускается до того, как система будет полностью готова сделать параметры прозрачности доступными для этого окна. Или как-то так рано загружает программу, что конфиг для гуаке еще не прочитан. Заставить его выглядеть так, как будто он запускается другим пользователем без установленных параметров прозрачности.

1
28.04.2021, 23:23

Я могу подтвердить слова Михаила Прокопеца. Я решил проблему, написав небольшую программу на C, которая запускает терминал через 10 секунд после загрузки среды рабочего стола, и я запускал ее при запуске с помощью Autorun. Для меня проблема заключалась в том, что я не мог запустить скрипт при запуске по какой-то причине, поэтому я прибегнул к C.

0
28.04.2021, 23:23

Теги

Похожие вопросы