Bagaimana saya bisa meneruskan alias ke sudo?

38

Saya telah mencoba memasukkan alias saya di ~/.bash_profile, ~/.bashrc, /etc/profile, dan /etc/bashrc.

Saya masih tidak dapat melakukan hal berikut:

alias zf2="php public/index.php"

dan kemudian jalankan:

sudo zf2 orm:info

Masalahnya sepertinya saya tidak dapat menentukan alias sebagai perintah menggunakan visudo - yang menyebabkan kesalahan sintaksis.

Jadi saya tidak dapat menelepon:

sudo zf2 orm:info

Namun, saya dapat membuat skrip di / usr / share / scripts / zf2 yang berisi:

#!/bin/bash

alias zf2="php public/index.php"
zf2 $1

dan tambahkan skrip ini sebagai perintah dalam visudo. Saat skrip ini berada di PATH pengguna akhir, saya dapat menjalankannya

zf2 orm:info

Saya memiliki alias berbeda seperti zf2itu yang perlu saya paparkan kepada pengguna akhir. Saya lebih suka memelihara alias daripada kumpulan skrip.

Michael Niño
sumber
1
Sayangnya saya ingin menggunakan alias dalam visudo dan saya tidak bisa.
Michael Niño
2
Itu tidak mungkin. Alias ​​ditangani oleh shell (dalam kasus Anda bash) dan diperluas sebelum dikirim ke aplikasi. sudosendiri tidak tahu apa-apa tentang alias.
Steven
2
Karena @Steven secara teknis benar, Anda harus menjelaskan apakah Anda hanya ingin memperluas alias sebelum ke sudoyang melewati garis, atau apakah Anda ingin alias diperluas di lingkungan ditinggikan. Pedantry bukan hanya cara untuk mendapatkan eye-rolls. (Wow, tapi kalimat terakhir itu sama sekali tidak terlihat halal.)
can-ned_food
3
Kemungkinan duplikat dari Bagaimana saya bisa alias perintah untuk sudo?
Gilles 'SO- berhenti bersikap jahat'
1
Cobalah dengansudo -E
Denis de Bernardy

Jawaban:

66

Ironisnya, solusinya adalah menelepon sudodari alias.

alias sd="sudo "

Catatan: Meskipun tidak disarankan, Anda dapat memberi nama alias sudo:alias sudo="sudo "

Manual Referensi Bash (Alias)

Jika karakter terakhir dari nilai alias adalah kosong, maka kata perintah berikutnya setelah alias juga diperiksa untuk ekspansi alias.

Steven
sumber
7
Saya mungkin dapat melihat alasan mengapa seseorang mau dan tidak ingin ini dilakukan sebagai default untuk sistem apa pun. Kenyamanan dan harapan seperti yang diminta, dibandingkan lebih berhati-hati dengan hak istimewa yang ditinggikan.
Pisis
5
alias sd="sudo "maychance?
The Nate
Setelah meninjau alias saya perhatikan bahwa saya tidak memilikinya alias sudo="sudo "di lingkungan pengguna akhir. Ini jawabannya
Michael Niño