Различие между расширением и заменой в терминологии сценариев оболочки

su требует пароля учетной записи, полномочия которой Вы пытаетесь принять (по-видимому, root в этом случае).

sudo требует пароля текущего пользователя - то есть, пароля для пользователя kshitiz.

Путем выполнения sudo su, Вы эффективно становитесь root, затем выполнение su для получения корневой оболочки - то есть, полномочия уже подняты до root перед вызовом к su выполняется, который является, почему Вы не становитесь предложенными пароль root снова.

8
09.12.2018, 16:42
2 ответа
[12180] Замена[119335] в этом контексте почти синонимична расширению [119336][119337], так как их значения перекрываются. Также не является полной подкатегорией другого, хотя в разделе [119338] Руководства GNU[119339], на который вы ссылаетесь, есть замены, которые рассматриваются как часть общего расширения.[12181] Расширение [119340][119341] извлекает значение идентификатора. Например, если [119342] это=что [119343], то при расширении [119344] это [119345] мы получим [119346] это [119347]. Расширение, которое не включает в себя подстановку, предопределено тем, что используемое значение уже существует и должно быть просто получено [119348], [119349], хотя это включает в себя комбинацию найденных/выраженных значений (например, с "арифметическим расширением").[12182]Подстановка [119350]создает значение в результате явной операции ввода/вывода. Например если [119352]this=$(foo bar)[119353], [119354]this[119355] является результатом выполнения [119356]foo bar[119357] и захвата его выхода.[119358]1[119359] Хотя значение, полученное в результате подстановки, может быть полностью предсказуемым, оно отличается от значения, полученного в нормальном расширении, так как на самом деле оно не существует до тех пор, пока подстановка не произойдет - оно произведено [119360]. [12183] Замены бывают двух видов: [119362] команда [119363] и [119364] процесс [119365], которые являются своего рода симметричными: [12184] "команда" в первом случае - это [119366]ls [119367], так же как и "процесс" во втором. Можно сказать, что подставляется действительно конец трубы. Замена процесса накладывается на [119368] перенаправление [119369]. Однако, это, вероятно, слишком ограничительное техническое ограничение, что подводит нас к сноске...[12185]foo bar[119545] в данном случае может быть функцией внутренней оболочки, и в этом случае нет межпроцессного ввода-вывода. Существование встроенных оболочек менее очевидно скрывает эту разницу. По содержанию входные и выходные данные будут одинаковыми. [12186]
6
27.01.2020, 20:12
[12155]Я думаю, что разница, как правило, слишком минимальна, чтобы быть достойной внимания - и эти термины часто используются как взаимозаменяемые. Хотя, если посмотреть на два вышеприведенных случая, то в первом примере мы [119288] заменяем [12156]$1[119291] на [119292]$2[119293] в результате расширения [119294]-[119295] из [119296]-[119297]. Как только [119298]$2[119299] не может быть [119300] расширено [119301], замена [119302] отсутствует. [12157] золотых приливов делает хорошее замечание об эфирно-вещественном существовании замен. Похоже на кошку Шредингера. Это напомнило мне кое-что. Возможно, вы не знакомы с этой формой POSIX-специфического расширения параметров, но оно работает как бы наоборот:[12158]Сейчас иногда мне нужно то же самое поведение, но для значения [119304]set[119305]. POSIX ни для чего конкретно не указывает на такое поведение. Но, с помощью пары трюков, это просто управляется:[12159]Но:[12160]
2
27.01.2020, 20:12

Теги

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