Показывать только задачи с текущего рабочего стола на плазме

Как говорит МакЛовин, автоматически заданная переменная readonly UID (и EUID) является особой особенностью bash (и некоторых других оболочек). Это не стандарт для оболочек в стиле Бурна, а sh нельзя полагать, чтобы установить эти переменные. В частности, sh в Ubuntu (по умолчанию) dash, который их не устанавливает.

У вас есть две возможности:

Вызывают запуск сценария на bash вместо sh. Измените свой сценарий, чтобы он был более портативным и не требовал bash.

Запуск сценария с помощью bash

Вы не сказали нам имя своего скрипта (это нормально). Я буду называть его cleanup, так как это имя похожего скрипта в руководстве, из которого вы работаете.

Обратите внимание, в частности, что я cleanup [!d11 ] называя это чем-то вроде cleanup.sh. Это потому, что я не рекомендую вам называть его суффиксом .sh:

Суффикс .sh предполагает, что он совместим с sh! Большинство скриптов вообще не имеют суффикса, а суффикс .sh или .bash может даже интерпретироваться как предполагающий, что ваш файл является «библиотекой», а не сценарием «верхнего уровня». То есть, он предоставляет код, который будет использоваться другими сценариями (например, с встроенным .), а не запускаться напрямую.

Однако, включая суффикс .sh, никак не повлияет на техническое поведение вашего скрипта.

Добавить строку hashbang как самую первую строку вашего скрипта: #!/bin/bash

Добавить строку hashbang [ ! d19] с chmod +x cleanup.

Теперь вы можете запустить свой скрипт, выполнив команду:

Суффикс .sh предполагает, что он совместим с sh! /path/to/cleanup, в общем. Если первое слово команды содержит /, оно интерпретируется как путь к исполняемому файлу. (В этом причина синтаксиса ./, так как . означает текущий каталог.) Первым словом я имею в виду команду до, но не включая ее первое незанятое пространство или вкладку: foo-bar/baz - это первое слово [ f29], а spam\ ham - это первое слово spam\ ham eggs, потому что пространство перед ham экранировано обратным слэшем. Большинство скриптов вообще не имеют суффикса, а суффикс .sh или .bash может даже интерпретироваться как предполагающий, что ваш файл является «библиотекой», а не сценарием «верхнего уровня». То есть, он предоставляет код, который будет использоваться другими скриптами (например, с встроенным .), а не запускаться напрямую.

Независимо от того, скрипт ли cleanup имеет строку #!... hashbang или что эта строка говорит:

/path/to/cleanup, в общем. Если первое слово команды содержит /, оно интерпретируется как путь к исполняемому файлу. (В этом причина синтаксиса ./, так как . означает текущий каталог.) Первым словом я имею в виду команду до, но не включая ее первое незанятое пространство или вкладку: foo-bar/baz - это первое слово [ f29], а spam\ ham - это первое слово spam\ ham eggs, поскольку пробел перед ham экранируется обратным слэшем. bash cleanup все равно (попытается) запустить его с bash в качестве интерпретатора ,

Это потому, что в этих случаях вы фактически запускаете интерпретатор (sh или bash) и передаете имя сценария интерпретатору, который должен быть запущен. Многие программы принимают имена файлов для открытия в командной строке, а оболочки, такие как sh и bash, следуют этому соглашению.

Создание вашего скрипта Portable

Если вы хотите сделать ваш сценарий переносимый, самый простой способ - не использовать $UID вообще, а вместо этого использовать какое-либо средство, доступное для всех оболочек в стиле Bourne.

В общем, нет встроенного средства оболочки для определения идентификатора пользователя , Но вы можете использовать МакЛовин говорит . Это внешняя программа, а не встроенная оболочка, но, как cat и bash , разумно ожидать, что она будет присутствовать.

id сам по себе выходы куча информации, но id -u дает только эффективный идентификатор пользователя.

Итак, вместо if [ "$UID" != "$ROOT_UID" ] вы можете использовать:

if [ "$(id -u)" != "$ROOT_UID" ]

cleanup , это не эквивалентно. $UID в bash дает реальный идентификатор пользователя, а id -u действительно соответствует bash $EUID. Если вы действительно хотите UID, а не EUID, используйте id -ru.

0
задан 23 December 2017 в 14:47

3 ответа

Щелкните правой кнопкой мыши по любой задаче на панели задач. Щелкните левой кнопкой мыши по настройкам диспетчера задач ... Прокрутите страницу вниз до первой вкладки под названием «Общие». Второй параметр в разделе «Фильтры» отображает только задачи с текущего рабочего стола. Нажмите здесь. Нажмите кнопку «Применить». Нажмите кнопку «ОК»

1
ответ дан 22 May 2018 в 15:58
  • 1
    Найди его, спасибо ... Я смотрел туда раньше, но я думаю, это было скрыто не очень заметной полосой прокрутки. – Gavagai 8 January 2018 в 02:45

Щелкните правой кнопкой мыши по любой задаче на панели задач. Щелкните левой кнопкой мыши по настройкам диспетчера задач ... Прокрутите страницу вниз до первой вкладки под названием «Общие». Второй параметр в разделе «Фильтры» отображает только задачи с текущего рабочего стола. Нажмите здесь. Нажмите кнопку «Применить». Нажмите кнопку «ОК»

1
ответ дан 18 July 2018 в 00:35

Щелкните правой кнопкой мыши по любой задаче на панели задач. Щелкните левой кнопкой мыши по настройкам диспетчера задач ... Прокрутите страницу вниз до первой вкладки под названием «Общие». Второй параметр в разделе «Фильтры» отображает только задачи с текущего рабочего стола. Нажмите здесь. Нажмите кнопку «Применить». Нажмите кнопку «ОК»

1
ответ дан 24 July 2018 в 17:15

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

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