sudo, не сохраняющий PS1

Проблема - это killall ожидает шаблон, который соответствовал бы имени процесса, а не его PID, в то время как $$ предоставляет текущий процесс PID. Вы хотите использовать kill вместо этого.

Кроме того, если Вы хотите удалить каталог наряду со всем его содержанием, Вам нужно -r переключатель к rm:

Наконец, что-либо, что Вы делаете после уничтожения процесса не вступит в силу: переместитесь kill в конец trap и удалите exit в целом:

trap 'rm -rf "$folder2";kill $$' 18 20 24

Если Вы хотите остановиться for цикл от работы перед удалением $folder2, можно использовать break:

trap 'break;rm -rf "$folder2";kill $$' 18 20 24
2
30.05.2014, 20:39
4 ответа
[1189037] Не используйте [1189459] sudo su [1189460]. Это злоупотребление/неиспользование [1189461]su[1189462]. Правильным эквивалентом является [1189463]sudo -s[1189464].
  • Если вы хотите сохранить переменные окружения, вы хотите [1189465]sudo -Es[1189466].
  • Если вы обнаружите, что [1189467]$PS1[1189468] все еще изменяется, скорее всего, у вас есть сценарий, который делает это. Вы можете узнать, где находится [1189469]sudo -Es $SHELL -x[1189470] и прочитать результат.[1189043].
  • 6
    27.01.2020, 21:49
    PS1[1189472], вероятно, инициализируется при запуске оболочки. Т.е. значение действительно сохраняется [1189473]sudo[1189474], но затем перезаписывается оболочкой.[1189045].
    1
    27.01.2020, 21:49
    [1189319]Обычно вы можете явно установить исходный файл [1189748]$ENV[1189749] для оболочки при вызове. Например, вам может повезти со следующим:[12176] В противном случае вы можете попробовать что-то вроде:[12177]
    1
    27.01.2020, 21:49
    [1189224] Год или два назад авторы и сопровождающие пакетов оболочек системы Unix сошлись во мнении, что в целом лучше [1189640]не

    экспортировать PS1[1189643] (из-за огромных синтаксических различий между различными оболочками в сочетании с определенным "взрывным" поведением одних оболочек при наличии подсказок других оболочек). Мы все договорились о переносе инициализации [1189644]PS1[1189645] в интерактивные файлы запуска оболочек, то есть [1189646]~/.mkshrc[1189647], [1189648]~/.kshrc[1189649], [1189650]~/.bashrc[1189651] и т.д.

    Отказ от ответственности: я - разработчик мкш.[1189227].

    5
    27.01.2020, 21:49

    Теги

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