У меня есть папка с chmod 000
правами доступа, в которой находится множество разных вещей. Чтобы попасть в нее, я bash
запускаю .sudo
sudo bash
Почему я не могу сделать &&
? Я хочу попасть cd
в каталог одной командой, например так:
sudo bash && cd desktop
Когда я запускаю это, я все еще нахожусь в ~
каталоге, который является каталогом по умолчанию.
Мне придется запустить это вместо этого
sudo bash
cd desktop
Также, рабочий стол - это не папка, это подпапка рабочего стола, но это неважно. В любом случае это одно и то же.
решение1
Часть после этого &&
выполняется в текущей оболочке, это не какой-то аргумент, переданный в тот, bash
с которым вы работаете sudo
.
У вас может возникнуть соблазн попробовать
sudo bash -c 'cd desktop'
но это не работает, потому что это bash
завершается после cd desktop
.
Можешь попробовать:
sudo sh -c 'cd desktop && exec bash'
что "работает" (т.е. помещает вас в каталог desktop
в оболочке Bash с uid=0). Я бы лучше выполнил две отдельные команды, чем эту одну строку.
решение2
Это работает, просто не так, как вы ожидаете. &&
ждет, пока команда завершится. Если результат в этот момент будет true
, он выполнит следующую инструкцию. Так что если вы введете bash && cd desktop
, вам сначала будет представлена оболочка bash. Если вы введете exit
, вы вернетесь в ту оболочку, в которой вы были до этого, изатемкаталог изменится на папку рабочего стола.
С точки зрения описанной мной функциональности, sudo несущественен. Ваш вариант использования sudo, вероятно, не является лучшей практикой, и вам следует рассмотреть другие решения.