Почему делает “pgrep-a”, производят, отличаются в зависимости от того, как файл открыт?

ОС: Ubuntu 18.04 или Kubuntu 18.04

Если я открываю файл с помощью файлового менеджера путем щелчка правой кнопкой и выбора gedit, чтобы открыть его и затем работать pgrep -a Я добираюсь

dkb@dkb-ubu1804:~$ pgrep -a gedit
2044 gedit /home/dkb/.bash_aliases

С другой стороны, если я сначала открываю gedit и использую диалог селектора файла для открытия того же файла, всех pgrep -a показывает мне,

dkb@dkb-ubu1804:~$ pgrep -a gedit
2081 gedit
dkb@dkb-ubu1804:~$ 

Название файла и пути не показывают.

Почему это?

1
задан 27 August 2019 в 07:48

1 ответ

Это вызвано тем, что pgrep -a шоу и название программы и его параметры командной строки, и когда Вы щелкаете правой кнопкой по /home/dkb/.bash_aliases и откройте его с gedit, это на самом деле работает gedit с /home/dkb/.bash_aliases как параметр командной строки. Это должно сказать, что это - как будто Вы выполнили команду gedit /home/dkb/.bash_aliases. Передача имен файлов как параметры командной строки не только для программ, которые Вы обычно запускали бы в терминале. Для того, также важно, как работают вводные файлы в настольной среде.

Когда Вы запускаете программу для открытия файла, заставляет ли путем щелчка правой кнопкой по файлу и выбора программы, двойного щелчка по файлу, когда это имеет тип MIME, который настроен для открытия той конкретной программой или перетаскиванием файла на средство запуска для программы, это программу быть выполненной с именем файла, переданным ему как параметр командной строки. Это работает тот же путь, как будто Вы работали gedit filename в окне терминала, которое также работает.

Напротив, открытие gedit без начального файла для редактирования не передает его никакие параметры командной строки. Это работает тот же путь, как будто Вы работали просто gedit. Когда Вы затем открываете файл в программе, которая не изменяет, какие параметры командной строки были переданы ему.

Для программы возможно попытаться изменить то, как что параметры командной строки, будет казаться, были переданы ему, когда программы pgrep проверить. Но это редко делается, чаще всего как полумера для редактирования уязвимой информации как пароли. (Лучший подход не должен передавать пароли в параметрах командной строки.)

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


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

Работать, a .desktop файл должен указать Должностное лицо key1, который дает команду и также - для команд, которые поддерживают быть запущенным для открытия файла или другого ресурса - заполнитель для аргументов. Несколько заполнителей доступны, но %U распространено. Это заменяется нулем, один, или больше URL или имен файлов. Exec строка в gedit.desktop :

Exec=gedit %U

1, Что ссылка переходит к документации GNOME, но это также относится к KDE и другим настольным средам. Это - спецификация freedesktop.org.

2
ответ дан 7 December 2019 в 13:14

Другие вопросы по тегам:

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