web-dev-qa-db-ja.com

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

エイリアスを~/.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のように、エンドユーザーに公開する必要がある別名があります。私はスクリプトの集まりよりもエイリアスを維持したいと思います。

37
Michael Niño

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

alias sd="Sudo "

注:推奨されていませんが、別名をSudoalias Sudo="Sudo "にすることができます

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

別名の値の最後の文字がブランクの場合は、別名に続く次のコマンドWordも別名展開について検査されます。

66
Steven