Làm thế nào tôi có thể chuyển một bí danh cho sudo?


38

Tôi đã cố gắng đặt bí danh của tôi ở ~/.bash_profile, ~/.bashrc, /etc/profile, và /etc/bashrc.

Tôi vẫn không thể thực hiện như sau:

alias zf2="php public/index.php"

và sau đó thực thi:

sudo zf2 orm:info

Vấn đề dường như là tôi không thể chỉ định bí danh là một lệnh bằng cách sử dụng visudo-- gây ra lỗi cú pháp.

Vì vậy, tôi không thể gọi:

sudo zf2 orm:info

Tuy nhiên, tôi đã có thể tạo tập lệnh tại / usr / share / scripts / zf2 có chứa:

#!/bin/bash

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

và thêm tập lệnh này làm lệnh trong visudo. Khi tập lệnh này ở cuối PATH của người dùng, tôi có thể thực thi

zf2 orm:info

Tôi có các bí danh khác nhau như thế zf2mà tôi cần để lộ cho người dùng cuối. Tôi muốn duy trì bí danh thay vì một bộ các tập lệnh.


1
Thật không may, tôi muốn sử dụng bí danh trong visudo và tôi không thể.
Michael Niño

2
Chuyện đó không thể xảy ra được. Bí danh được xử lý bởi shell (trong trường hợp của bạn bash) và mở rộng trước khi được gửi đến ứng dụng. sudobản thân nó không biết gì về bí danh.
Steven

2
Bởi vì @Steven là đúng về mặt kỹ thuật, bạn nên làm rõ cho dù bạn chỉ đơn giản là muốn mở rộng bí danh trước để sudođược thông qua dòng, hoặc cho dù bạn muốn các bí danh mở rộng trong môi trường cao. Pedantry không chỉ đơn thuần là một cách để khơi gợi những con mắt. (Wow, nhưng câu cuối cùng đó trông không có vẻ gì cả.)
can-ned_food


1
Hãy thử vớisudo -E
Denis de Bernardy

Câu trả lời:


66

Trớ trêu thay, giải pháp là gọi sudotừ một bí danh.

alias sd="sudo "

Lưu ý: Mặc dù không được đề xuất, bạn có thể đặt tên bí danh sudo:alias sudo="sudo "

Tài liệu tham khảo Bash (Bí danh)

Nếu ký tự cuối cùng của giá trị bí danh là trống, thì từ lệnh tiếp theo sau bí danh cũng được kiểm tra để mở rộng bí danh.


7
Tôi có thể thấy lý do tại sao một người nào đó sẽ và không muốn điều này được thực hiện làm mặc định cho bất kỳ hệ thống nào. Sự thuận tiện và kỳ vọng khi được yêu cầu, so với việc cẩn thận hơn với các đặc quyền nâng cao.
Pysis

5
alias sd="sudo "may mắn?
Nate

Sau khi xem xét các bí danh của tôi, tôi nhận thấy rằng tôi không có alias sudo="sudo "trong môi trường người dùng cuối. Đây là câu trả lời
Michael Niño
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.