Por que 'sudo bash && cd desktop' não entra na pasta desktop?

Por que 'sudo bash && cd desktop' não entra na pasta desktop?

Eu tenho uma pasta com chmod 000permissões com muitas coisas diferentes, a forma como entro é começando bashexecutando .sudosudo bash

Por que não posso fazer &&? Quero cdentrar 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 bashvocê executa sudo.

Você pode ficar tentado a tentar

sudo bash -c 'cd desktop'

mas isso não funciona porque bashsai depois de cd desktop.

Podes tentar:

sudo sh -c 'cd desktop && exec bash'

que "funciona" (ou seja, coloca você no diretório desktopem 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.

informação relacionada