ash
frombusybox
を使用する組み込みLinuxシステム(kernel-5.10.24)を開発しています/bin/sh
。システムはadb shell
シリアルコンソールとPCからのログインをサポートします。
shell
これで、シリアルコンソールから起動すると定義された環境が読み取られますが、シリアル/etc/profile
コンソールshell
から起動すると読み込まadb shell
れません。
例えば、/etc/profile
以下のように
# cat /etc/profile
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
if [ "$PS1" ]; then
if [ "`id -u`" -eq 0 ]; then
export PS1='# '
else
export PS1='$ '
fi
fi
シリアルコンソールでは
# echo $HOME
/root
# echo $ENV
# echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin
しかし今adb shell
、
/sys/kernel/config/usb_gadget # echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin
/sys/kernel/config/usb_gadget # echo $HOME
/
起動されたシェルはターゲットLinuxで起動されadb shell
ます。それでは、シェルを起動してその環境の他の設定ファイルを読み取るadbd
方法はありますか?adb shell
/etc/profile
ベストアンサー1
あなたが望むことを達成するためにラッパースクリプトを試してみてください。
adb shell 'ENV=/etc/profile sh -i'
単純なエイリアスは次のとおりです。
alias adbshellenv="adb shell 'ENV=/etc/profile sh -i'"