「sudo bash && cd desktop」でデスクトップ フォルダーに cd しないのはなぜですか?

「sudo bash && cd desktop」でデスクトップ フォルダーに cd しないのはなぜですか?

chmod 000さまざまなものが入っている権限付きのフォルダーがあります。フォルダーに入るには、を実行してbash開始します。sudosudo bash

なぜできないのですか?次のようなコマンド 1 つでディレクトリに入り&&たいのですが:cd

sudo bash && cd desktop

~これを実行すると、デフォルトのディレクトリに留まります。

代わりにこれを実行する必要があります

sudo bash
cd desktop

また、デスクトップはフォルダーではなく、デスクトップのサブフォルダーですが、それは問題ではありません。いずれにせよ同じことです。

答え1

以降の部分は現在のシェルで実行され、で実行する&&ときに渡される引数ではありません。bashsudo

試してみたくなるかもしれない

sudo bash -c 'cd desktop'

bashしかし、 は の後に終了するため、これは機能しませんcd desktop

あなたが試すことができます:

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

これは「動作します」(つまり、uid=0 の Bash シェルのディレクトリに移動しますdesktop)。1 行のコマンドよりも、2 つの別々のコマンドを発行する方がよいでしょう。

答え2

期待通りには動作しませんが、&&コマンドが完了するまで待機します。その時点での結果が の場合true、次の命令を実行します。 と入力するとbash && cd desktop、最初に bash シェルが表示されます。 と入力するとexit、以前いたシェルに戻り、それからディレクトリがデスクトップ フォルダーに変更されます。

私が説明した機能に関して言えば、sudo は重要ではありません。sudo の使用例はおそらくベスト プラクティスではないので、他のソリューションを検討する必要があります。

関連情報