Saat ini saya sedang mempelajari dasar-dasar Linux dengan Ubuntu dan ada sedikit aktivitas di mana saya perlu mencari informasi tentang variabel lingkungan. Saya sudah menemukan info 6/7 tetapi tidak dapat menemukannya SUDO_COMMAND
. Beginilah daftarnya:
SHELL=/bin/bash
USER=student
SUDO_COMMAND=
PWD=/home
HOME=/home/student
LOGNAME=student
OLDPWD=/home/student
Saya perhatikan bahwa informasi datang dalam urutan dan SUDO_COMMAND
antara pengguna dan pwd. apakah saya melakukan kesalahan di suatu tempat?
command-line
sudo
kyle cruz
sumber
sumber
Jawaban:
SUDO_COMMAND
adalah variabel lingkungan yang ditetapkan olehsudo
hanya di lingkungan proses yang dimulai olehnya (dan diwarisi oleh proses anak). Jika Anda menjalankansudo some-command arg1 arg2
, makaSUDO_COMMAND
akan berisi path absolut kesome-command
, danarg1 arg2
. Jika Anda menjalankansudo -s
atausudo -i
, maka variabel akan ditetapkan ke shell yang dimulai. Bagaimanapun, Anda mungkin tidak akan melihatnya di luar pohon proses yang dimulai olehsudo
.Sebagai contoh:
Atau:
Aku tidak tahu mana perintah yang Anda gunakan, tetapi Anda tidak dapat bergantung pada output
set
,declare
,env
atauprintenv
berada di beberapa urutan.sumber
sudo echo $SUDO_COMMAND
bisa digunakan untuk membuat infinitive loop… :(Ini
SUDO_COMMAND
adalah variabel lingkungan yang diatur ke perintah yang dijalankan oleh sudo .Seperti yang disebutkan oleh @muru - jika
sudo
menjalankan shell baru - variabel lingkungan ini akan ditampilkan di shell baru iniInfo lebih lanjut
man sudo
memberikan detail berikut:sumber
SUDO_COMMAND
hanya ada di lingkungan yang dimulai olehsudo
, jikaSUDO_COMMAND
benar-benar di mana/bin/ls
, maka Anda tidak akan mendapatkan shell untuk dijalankanecho $SUDO_COMMAND
.