Что будет отображаться в первичной подсказке, определяется содержимым
переменной PS1
. Вот отрывок из документации bash:
\w the current working directory, with $HOME abbreviated
with a tilde (uses the value of the PROMPT_DIRTRIM vari‐
able)
\W the basename of the current working directory, with $HOME
abbreviated with a tilde
Это означает, что если ваша PS1
использует \w
, то будет выведен весь путь для
будет напечатан весь путь к текущему каталогу, в то время как \W
вызовет другое поведение.
поведение, которое вы наблюдали: выводится только последний компонент (с исключением
исключением, в обоих случаях, для вашего домашнего каталога).
По умолчанию PS1
на какой-то случайной системе на базе Linux, которую я пробовал, был следующим.
[\u@\h \W]\$
, но это варьируется от системы к системе.
У меня есть решение, хотя оно немного странное и обнажает дыру в ОС.
Во время postinst
, я:
cp $(which chrt) bin/chrt
setcap cap_sys_nice+ep bin/chrt
Затем в коде я запускаю процесс с:
bin/chrt -o -p 70 getpid()
Недостаток, который мы только что выявили, заключается в том, что любой, кто использует эту версию chrt
, может делать это без прав администратора. Поскольку я запускаю это очень контролируемую целевую среду, я согласен с этой дырой, но я бы не рекомендовал ее тем, кто не имеет контроля над своей целевой средой.
Для изменения планировщика и приоритета требуется только возможность CAP_SYS_NICE
; см. план (7 )Привилегии и ограничения ресурсов . Вы, вероятно, также захотите посмотреть справочную страницу для sched_setscheduler
, где упоминается sched (7 ).
Есть несколько способов предоставить вашей программе такую возможность; самый простой, наверное, setcap:
# setcap cap_sys_nice=ep /usr/local/bin/your-program
Это работает аналогично установке -идентификатора пользователя -, но гораздо более ограничено (, поскольку дает только одну возможность ). Конечно, CAP _SYS _NICE эффективно дает программе разрешение на зависание системы (, потребляя все процессорное время задачами реального времени ).
Другие способы включают использование запуска -в качестве -корневой оболочки (, которая сбрасывает все другие разрешения )или повышение прав с использованием, например, RealtimeKit/PolicyKit.
(Для получения дополнительной информации о возможностях я предлагаю начать с возможностей (7)).