エイリアスをsudoに渡すにはどうすればよいですか?


38

私はで私のエイリアスを入れて試してみましたが~/.bash_profile~/.bashrc/etc/profile、と/etc/bashrc

私はまだ次を実行することができません:

alias zf2="php public/index.php"

次に実行します:

sudo zf2 orm:info

問題は、visudoを使用してコマンドとしてエイリアスを指定できないということです。これにより、構文エラーが発生します。

だから私は電話することができません:

sudo zf2 orm:info

ただし、/ usr / share / scripts / zf2に以下を含むスクリプトを作成できました。

#!/bin/bash

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

このスクリプトをvisudoのコマンドとして追加します。このスクリプトがエンドユーザーのPATHにあるとき、私は実行できます

zf2 orm:info

zf2エンドユーザーに公開する必要があるようなエイリアスがあります。スクリプトのコレクションの代わりにエイリアスを維持したいと思います。


1
残念ながら、visudoでエイリアスを使用したいのですが、できません。
マイケルニーニョ

2
それは不可能です。エイリアスはシェル(bashの場合)によって処理され、アプリケーションに送信される前に展開されます。 sudoエイリアス自体は何も知りません。
スティーブン

2
@Stevenは技術的に正しいため、行を渡すに単にエイリアスを展開するsudoか、昇格した環境でエイリアスを展開するかを明確にする必要があります。ペダントリーは、単に目を引き付ける方法ではありません。(うわー、しかし、その最後の文はまったくコーシャーに見えません。)
can-ned_food


1
で試してくださいsudo -E
デニスドベルナルディ

回答:


66

皮肉なことに、解決策はsudoエイリアスから呼び出すことです。

alias sd="sudo "

注:推奨されていませんが、エイリアスに名前を付けることができますsudoalias sudo="sudo "

Bashリファレンスマニュアル(エイリアス)

エイリアス値の最後の文字が空白の場合、エイリアスに続く次のコマンドワードのエイリアス展開もチェックされます。


7
おそらく、誰かがこれをシステムのデフォルトとして実行したい、したくない理由を見ることができます。特権の昇格にもっと注意を払うのではなく、求められている便利さと期待。
Pysis

5
alias sd="sudo "チャンス?
ネイト

エイリアスを確認alias sudo="sudo "した後、エンドユーザー環境にはないことに気付きました。これが答えです
マイケルニーニョ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.