Saya memiliki server Centos 5.5 yang memiliki perintah alias saya sendiri untuk akun saya. Ketika saya melakukannya sudo bash
saya masih bisa menggunakan alias itu, saya tidak perlu menambahkan alias ke root .bashrc
.
Saya memiliki server lain yaitu Centos 6.5. Tetapi ketika saya mengeksekusi sudo bash
, itu tidak akan menggunakan alias saya dari pengguna yang saya login sebagai. Adakah yang tahu di mana saya mengkonfigurasinya untuk memasukkan alias dari pengguna yang saya masuki saat saya gunakan sudo bash
?
sudo sudo -V
output danenv_keep
di halaman manual sudoers.Defaults !always_set_home
danDefaults !env_reset
`Jawaban:
Tambahkan baris berikut ke ~ / .bashrc Anda:
Dari manual bash
Jadi Bash hanya memeriksa kata pertama dari sebuah perintah untuk alias, kata-kata setelah itu tidak dicentang. Itu berarti dalam perintah seperti sudo ll, hanya kata pertama (sudo) diperiksa oleh bash untuk alias, ll diabaikan. Kita dapat memberi tahu bash untuk memeriksa kata berikutnya setelah alias (yaitu sudo) dengan menambahkan spasi di akhir nilai alias.
sumber
sudo
perintah, misalnyasudo some_alias ...
, tetapi yang ditanyakan OP adalah bagaimana membuat alias didefinisikan untuk pekerjaan penggunanya sendiri setelah ia beralih ke pengguna lain yang menggunakansudo
. Katakanlah saya telahsome_alias
mendefinisikan. Ketika sayasudo
untukroot
menggunakansudo su
, lingkungan baru dibuat dan bahwa alias tidak didefinisikan ada. Ada-E
parameter darisudo
perintah yang seharusnya mengekspor lingkungan tetapi sepertinya alias bukan bagian dari itu.Gunakan
sudo -E
, yang akan mengekspor lingkungan Anda.sumber
sudo -E bash
. Ketika digunakan dengansu
sebagaisudo -E su
, hal-hal yang didefinisikan dalam pengguna.bashrc
(alias, prompt, dll.) Tidak dipertahankan, meskipun sepertinya variabel lingkungan dipertahankan dalam kedua kasus. Saya tidak yakin bagaimana tepatnya ini bekerja.