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

5

Eu tenho uma pasta com chmod 000 de permissões nela com muitas coisas diferentes, a forma como eu entro é um começo bash in sudo executando sudo bash .

Por que não posso fazer && ? Eu quero cd no diretório com um comando como este:

sudo bash && cd desktop

Quando executo isso, ainda estou em ~ , que é o diretório padrão.

Eu tenho que usar isso

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. É a mesma coisa de qualquer maneira.

    
por DisplayName 13.10.2014 / 09:31

2 respostas

18

A parte após && é executada no shell atual, não é algum argumento entregue ao bash que você executa com sudo .

Você pode se sentir tentado a tentar

sudo bash -c 'cd desktop'

mas isso não funciona porque bash sai após cd desktop .

Você pode 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). Eu prefiro emitir os dois comandos separados do que aquele forro.

    
por 13.10.2014 / 09:47
2

Funciona, não exatamente como você espera. && aguarda até que o comando seja concluído. Se o resultado nesse ponto for true , ele executará a próxima instrução. Então, se você digitar bash && cd desktop , primeiro você será presenteado com um shell bash. Se você digitar exit , você estará de volta no shell em que você estava antes, e então o diretório será alterado para a pasta da área de trabalho.

Em termos da funcionalidade que descrevi, o sudo é irrelevante. Seu caso de uso para o sudo provavelmente não é a melhor prática, e você deve considerar outras soluções.

    
por 13.10.2014 / 17:29