Eu tenho uma pasta com chmod 000
permissões com muitas coisas diferentes, a forma como entro é começando bash
executando .sudo
sudo bash
Por que não posso fazer &&
? Quero cd
entrar no diretório com um comando como este:
sudo bash && cd desktop
Quando executo isso, ainda estou no ~
diretório padrão.
Eu tenho que executar isso em vez disso
sudo bash
cd desktop
Além disso, a área de trabalho não é a pasta, é uma subpasta da área de trabalho, mas não importa. De qualquer forma, é a mesma coisa.
Responder1
A parte seguinte &&
é executada no shell atual, não é um argumento entregue ao que bash
você executa sudo
.
Você pode ficar tentado a tentar
sudo bash -c 'cd desktop'
mas isso não funciona porque bash
sai depois de cd desktop
.
Podes tentar:
sudo sh -c 'cd desktop && exec bash'
que "funciona" (ou seja, coloca você no diretório desktop
em um shell Bash com uid=0). Prefiro emitir os dois comandos separados do que aquele liner.
Responder2
Funciona, mas não como você espera. &&
espera até que o comando seja concluído. Se o resultado nesse ponto for true
, ele executará a próxima instrução. Portanto, se você digitar bash && cd desktop
, primeiro será apresentado um shell bash. Se você digitar exit
, você estará de volta ao shell em que estava antes eentãoo diretório mudará para a pasta da área de trabalho.
Em termos da funcionalidade que descrevi, o sudo é irrelevante. Seu caso de uso para sudo provavelmente não é uma prática recomendada e você deve considerar outras soluções.