cdadalah shell builtin. sudohanya 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.
Tapi kemudian sudo pwdtidak akan berhasil? (Aku selalu membayangkan bahwa sudo cdtidak bekerja, tapi Anda hanya tidak melihat hasil setelah sudokembali. Tapi itu hanya menebak liar. Mungkin tidak cdjuga pwdsebenarnya built-in di Bash pada Mac. Menjalankan which cdtidak memang memberikan hasil. Menjalankan sudo cd /tidak memberi saya kesalahan, tetapi memang tidak menghasilkan direktori kerja yang berubah.)
Arjan
2
@Arjan: pwdjuga merupakan executable eksternal sehingga akan berfungsi. Perhatikan bahwa pada beberapa sistem, ada yang cddapat dieksekusi, tetapi sebagian besar tidak berguna. Ngomong -ngomong, menggunakannya type -a cdjauh lebih informatif daripada which.
Dennis Williamson
1
Bagus! type -a cdmenunjukkan keduanya cd is a shell builtindan cd is /usr/bin/cddi Mac saya. Dan juga untuk pwddan echo. Dan keduanya sudo pwddan sudo echo "Hello world"melakukan memberikan hasilnya. Namun, type -a returnhanya menghasilkan return is a shell builtin, dan sudo return 3menunjukkan kepada saya sudo: return: command not found. Jadi, saya kira pertanyaannya adalah: apakah OP mendapatkan pesan kesalahan, atau apakah OP tidak melihat cdpekerjaan tanpa kesalahan? (Atau: OS apa yang digunakan OP.)
Arjan
sudo sh -c 'cd dirname'tidak melakukan apa pun untuk saya.
Peter Niederwieser
1
@Arjan saya menemukan penjelasan: Ini adalah sesuatu seperti hack kompatibilitas yang dalam. Itu tidak melakukan fungsinya, tetapi telah datang dari efek samping yang nyata cdmiliki. Dan itu tidak dapat melakukan apa-apa alih-alih gagal ketika shell saat ini tidak memiliki cdperintah. 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 cdperintah eksternal?
Volker Siegel
72
Alih-alih mencoba menggunakan sudo -suntuk memulai shell root dan kemudian cukup cdke 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 sudapat menjadi root dan kemudian cdsemua yang Anda inginkan ... Saya tahu jawaban telah diterima, tetapi jika seseorang tidak ada dalam daftar sudoers maka ini adalah satu-satunya pilihan.
Jawaban:
cd
adalah shell builtin.sudo
hanya berfungsi dengan executable. Anda bisa melakukannyasudo 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.sumber
sudo pwd
tidak akan berhasil? (Aku selalu membayangkan bahwasudo cd
tidak bekerja, tapi Anda hanya tidak melihat hasil setelahsudo
kembali. Tapi itu hanya menebak liar. Mungkin tidakcd
jugapwd
sebenarnya built-in di Bash pada Mac. Menjalankanwhich cd
tidak memang memberikan hasil. Menjalankansudo 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 yangcd
dapat dieksekusi, tetapi sebagian besar tidak berguna. Ngomong -ngomong, menggunakannyatype -a cd
jauh lebih informatif daripadawhich
.type -a cd
menunjukkan keduanyacd is a shell builtin
dancd is /usr/bin/cd
di Mac saya. Dan juga untukpwd
danecho
. Dan keduanyasudo pwd
dansudo echo "Hello world"
melakukan memberikan hasilnya. Namun,type -a return
hanya menghasilkanreturn is a shell builtin
, dansudo return 3
menunjukkan kepada sayasudo: return: command not found
. Jadi, saya kira pertanyaannya adalah: apakah OP mendapatkan pesan kesalahan, atau apakah OP tidak melihatcd
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 memilikicd
perintah. Setiap shell yang pernah digunakan oleh manusiacd
, 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 gunanyacd
perintah eksternal?Alih-alih mencoba menggunakan
sudo -s
untuk memulai shell root dan kemudian cukupcd
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!
sumber
Anda hanya
su
dapat menjadi root dan kemudiancd
semua yang Anda inginkan ... Saya tahu jawaban telah diterima, tetapi jika seseorang tidak ada dalam daftar sudoers maka ini adalah satu-satunya pilihan.sumber