Mengapa mengetikkan sudo cd apa pun yang tidak akan mengubah direktori?
Mengapa mengetikkan sudo cd apa pun yang tidak akan mengubah direktori?
Jawaban:
cd
adalah shell builtin. sudo
hanya berfungsi dengan executable. Anda bisa melakukannya sudo sh -c 'cd dirname'
tetapi begitu shell keluar, Anda kembali ke direktori tempat Anda memulai. Jika Anda mengatakan apa yang ingin Anda capai maka saya dapat membantu Anda menemukan cara untuk melakukannya.
sudo pwd
tidak akan berhasil? (Aku selalu membayangkan bahwa sudo cd
tidak bekerja, tapi Anda hanya tidak melihat hasil setelah sudo
kembali. Tapi itu hanya menebak liar. Mungkin tidak cd
juga pwd
sebenarnya built-in di Bash pada Mac. Menjalankan which cd
tidak memang memberikan hasil. Menjalankan sudo cd /
tidak memberi saya kesalahan, tetapi memang tidak menghasilkan direktori kerja yang berubah.)
pwd
juga merupakan executable eksternal sehingga akan berfungsi. Perhatikan bahwa pada beberapa sistem, ada yang cd
dapat dieksekusi, tetapi sebagian besar tidak berguna. Ngomong -ngomong, menggunakannya type -a cd
jauh lebih informatif daripada which
.
type -a cd
menunjukkan keduanya cd is a shell builtin
dan cd is /usr/bin/cd
di Mac saya. Dan juga untuk pwd
dan echo
. Dan keduanya sudo pwd
dan sudo echo "Hello world"
melakukan memberikan hasilnya. Namun, type -a return
hanya menghasilkan return is a shell builtin
, dan sudo return 3
menunjukkan kepada saya sudo: return: command not found
. Jadi, saya kira pertanyaannya adalah: apakah OP mendapatkan pesan kesalahan, atau apakah OP tidak melihat cd
pekerjaan tanpa kesalahan? (Atau: OS apa yang digunakan OP.)
sudo sh -c 'cd dirname'
tidak melakukan apa pun untuk saya.
cd
miliki. Dan itu tidak dapat melakukan apa-apa alih-alih gagal ketika shell saat ini tidak memiliki cd
perintah. Setiap shell yang pernah digunakan oleh manusia cd
, termasuk /bin/sh
. Tetapi sebuah program yang, dilihat dari kernel sistem operasi, sebuah shell bisa jauh lebih sederhana dari itu, bahkan hanya beberapa baris kode. Lihat Apa gunanya cd
perintah eksternal?
Alih-alih mencoba menggunakan sudo -s
untuk memulai shell root dan kemudian cukup cd
ke direktori.
Setelah selesai sebagai root, tekan CtrlDatau ketik exit
.
Sebagai Arjan mengisyaratkan dalam komentarnya di bawah ini, penting untuk dicatat bahwa sebagai root, seseorang dapat dengan mudah melakukan kerusakan pada komponen sistem penting. Gunakan dengan hati-hati!
Anda hanya su
dapat menjadi root dan kemudian cd
semua yang Anda inginkan ... Saya tahu jawaban telah diterima, tetapi jika seseorang tidak ada dalam daftar sudoers maka ini adalah satu-satunya pilihan.