Saya ingin membuat alias yang melakukan sesuatu seperti ini:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Jadi dari baris perintah saya, saya login dengan user sudo, dan saya ingin ketik alias userYYY
sehingga shell saya sekarang login dengan userYYY
dan pwd
adalah /a/path/that/only/userYYY/has/access
.
Bagaimana saya bisa melakukan itu? Ini userYYY
untuk menjalankan beberapa proses, dan harus ada apa pun di rumahnya. Karenanya, saya mencoba mengubah $ HOME-nya menggunakan:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
Dan kemudian dari shell saya dengan file sudoer saya saya lakukan sudo su userYYY
. Tapi itu tidak berhasil. Satu-satunya yang berfungsi adalah sudo su -l userYYYY
tetapi yang membuka bash baru di dalam shell asli saya ( -bash-4.1$ ....
).
Singkatnya, apa yang saya inginkan adalah untuk menghindari menulis 2 baris di shell saya:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
Ada ide?
bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
.bashrc
filesudo
kemudiancd
di mana sebagai memiliki 2 jalur terpisah hanya tidak bekerja.Salah satu opsi adalah mengedit
~/.bashrc
pengguna target, dan menambahkan dicd
sana:sumber
Jawaban singkat - Anda tidak bisa. The
sudo su
dimulai shell baru yang harus keluar sebelum sampai kecd
perintah.sumber
Bagi saya kombinasi
sudo
danscreen
berhasil:Perintah ini pertama-tama beralih ke
vagrant
pengguna. Kemudian sebagaivagrant
perubahan direktori/vagrant
dan jalankannpm install
.sumber
Saya tahu ini sedikit berbeda dari pertanyaan awal, tetapi idenya adalah menjalankan perintah sebagai pengguna yang berbeda tanpa mengetikkan kata sandi ketika kebijakan melarang
sudo su <user> -c
.sumber