私はしばらくの間、これに頭を悩ませてきました。とてもシンプルに見えますが、私はそれを機能させることができません。それが違いを生むならば、これは根ざしたアンドロイドタブレットにあります。通常のLinuxシステムでsudoの動作を模倣しようとしています。私はbashスクリプトに関してはあまり経験がないので、これはおそらく非常に簡単です。これは2つの部分からなる問題です。
これがエイリアスと呼ばれるbashスクリプト(の一部)です。通常はbashrcから供給されます。問題は、カスタムsudoコマンドがこのスクリプトで定義されたエイリアスにアクセスできるようにすることです。
#! /system/xbin/bash
alias ls='busybox ls --color=auto'
function sudo() {
su -c 'source /system/etc/bash/aliases && "$@"'
}
したがって、シェルからsudoを呼び出すと、まったく何も出力されません。上記のスクリプトの最後にあるクイック「echook」は、sudoを実行しようとしたときにソースコマンドが実行されていることを示しています。しかし、「&&」の後には何も行われていないようです。エコーすらしません。ランダムなファイル名に触れても機能しないので、リダイレクトされているなどの問題はないようです。'&&'を'||'に置き換えてみました しかし、それも機能しません。
問題のパート2は、デバッグ時に発生しました。シェルから以下を呼び出す:
su -c 'source /system/etc/bash/aliases && ls'
... lsが呼び出される直前にエイリアスファイルがソースされていたとしても、色なしでlsを出力します。今、私は完全に混乱しています。