Saya menjalankan Ubuntu 10.04 dan saya menggunakan upstart
untuk manajemen daemon. Aplikasi perusahaan saya dijalankan sebagai daemon dan harus dijalankan sebagai root karena berbagai hak istimewa. Mis.:
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
Saya ingin memperkenalkan alias
untuk menyingkat perintah ini sebagai sesuatu seperti:
alias startapp='sudo start my-application-long-ID'
dan jalankan sebagai startapp
dan itu berfungsi tetapi saya lebih suka tidak memiliki sudo di alias.
alias startapp='start my-application-long-ID'
tidak ketika dijalankan menggunakan sudo startapp
, mengembalikan sudo: startapp: command not found
.
Namun, ketika saya menambahkan alias:
alias sudo='sudo '
sudo startapp
sekarang berfungsi tetapi saya masih penasaran mengapa sudo mengabaikan alias.
Jawaban yang Diterima:
Saya melihat informasi di bawah ini dari sini.
Saat menggunakan sudo, gunakan perluasan alias (jika tidak, sudo mengabaikan alias Anda)
alias sudo='sudo '
Alasan mengapa itu tidak berhasil dijelaskan di sini.
Bash hanya memeriksa kata pertama dari perintah untuk alias, kata apa pun
setelah itu tidak dicentang. Itu berarti dalam perintah seperti sudo ll, hanya
kata pertama (sudo) yang diperiksa oleh bash untuk sebuah alias, ll akan diabaikan.
Kita dapat memberitahu bash untuk memeriksa kata berikutnya setelah alias (yaitu sudo) dengan
menambahkan spasi di akhir nilai alias.