aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcvpcs <root@cvpcs.org>2010-06-03 14:18:57 -0500
committercvpcs <root@cvpcs.org>2010-06-03 14:18:57 -0500
commit5999b91c4395ce08fd3e893d98e9f4b54b05ac02 (patch)
treeea46f31ea994706c86594905ddbc8ca1c78a0b7e
parentae603269d2fbb6784019d92dbe4396272bc4c12d (diff)
downloadexternal_bash-5999b91c4395ce08fd3e893d98e9f4b54b05ac02.zip
external_bash-5999b91c4395ce08fd3e893d98e9f4b54b05ac02.tar.gz
external_bash-5999b91c4395ce08fd3e893d98e9f4b54b05ac02.tar.bz2
added bashrc and bash_logout support system-wide
-rw-r--r--Android.mk14
-rw-r--r--config-top.h4
-rw-r--r--etc/bash_logout1
-rw-r--r--etc/bashrc93
4 files changed, 110 insertions, 2 deletions
diff --git a/Android.mk b/Android.mk
index 7cd200e..59f3131 100644
--- a/Android.mk
+++ b/Android.mk
@@ -42,4 +42,18 @@ LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
include $(BUILD_EXECUTABLE)
# ========================================================
+# bash configs
+# ========================================================
+etc_files := $(shell ls -1 $(LOCAL_PATH)/etc/)
+
+copy_to := $(addprefix $(TARGET_OUT)/etc/$(LOCAL_MODULE)/,$(etc_files))
+copy_from := $(addprefix $(LOCAL_PATH)/etc/,$(etc_files))
+
+$(copy_to) : PRIVATE_MODULE := system_etcdir
+$(copy_to) : $(TARGET_OUT)/etc/$(LOCAL_MODULE)/% : $(LOCAL_PATH)/etc/% | $(ACP)
+ $(transform-prebuilt-to-target)
+
+ALL_PREBUILT += $(copy_to)
+
+# ========================================================
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/config-top.h b/config-top.h
index 67ddcac..84f0a83 100644
--- a/config-top.h
+++ b/config-top.h
@@ -75,10 +75,10 @@
#define KSH_COMPATIBLE_SELECT
/* System-wide .bashrc file for interactive shells. */
-#define SYS_BASHRC "/system/etc/.bashrc"
+#define SYS_BASHRC "/system/etc/bash/bashrc"
/* System-wide .bash_logout for login shells. */
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
+#define SYS_BASH_LOGOUT "/system/etc/bash/bash_logout"
/* Define this to make non-interactive shells begun with argv[0][0] == '-'
run the startup files when not in posix mode. */
diff --git a/etc/bash_logout b/etc/bash_logout
new file mode 100644
index 0000000..5b4f8bb
--- /dev/null
+++ b/etc/bash_logout
@@ -0,0 +1 @@
+clear
diff --git a/etc/bashrc b/etc/bashrc
new file mode 100644
index 0000000..a755c81
--- /dev/null
+++ b/etc/bashrc
@@ -0,0 +1,93 @@
+# /etc/bash/bashrc
+#
+# This file is sourced by all *interactive* bash shells on startup,
+# including some apparently interactive shells such as scp and rcp
+# that can't tolerate any output. So make sure this doesn't display
+# anything or bad things will happen !
+
+
+# Test for an interactive shell. There is no need to set anything
+# past this point for scp and rcp, and it's important to refrain from
+# outputting anything in those cases.
+if [[ $- != *i* ]] ; then
+ # Shell is non-interactive. Be done now!
+ return
+fi
+
+# Bash won't get SIGWINCH if another process is in the foreground.
+# Enable checkwinsize so that bash will check the terminal size when
+# it regains control. #65623
+# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
+shopt -s checkwinsize
+
+# Enable history appending instead of overwriting. #139609
+shopt -s histappend
+
+# Change the window title of X terminals
+case ${TERM} in
+ screen)
+ PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\033\\"'
+ ;;
+esac
+
+# Set up a ton of aliases to cover toolbox with the nice busybox
+# equivalents of its commands
+alias cat='busybox cat'
+alias ln='busybox ln'
+alias ls='busybox ls'
+alias mount='busybox mount'
+alias rm='busybox rm'
+alias umount='busybox umount'
+alias df='busybox df'
+alias chmod='busybox chmod'
+alias chown='busybox chown'
+alias mv='busybox mv'
+alias mkdir='busybox mkdir'
+alias rmdir='busybox rmdir'
+alias insmod='busybox insmod'
+alias rmmod='busybox rmmod'
+alias lsmod='busybox lsmod'
+
+use_color=false
+
+# Set colorful PS1 only on colorful terminals.
+# dircolors --print-database uses its own built-in database
+# instead of using /etc/DIR_COLORS. Try to use the external file
+# first to take advantage of user additions. Use internal bash
+# globbing instead of external grep binary.
+safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
+match_lhs=""
+[[ -f /system/etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</system/etc/DIR_COLORS)"
+[[ -z ${match_lhs} ]] \
+ && type -P dircolors >/dev/null \
+ && match_lhs=$(dircolors --print-database)
+[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
+
+if ${use_color} ; then
+ # Enable colors for ls, etc. Prefer ~/.dir_colors #64489
+ if type -P dircolors >/dev/null ; then
+ if [[ -f ~/.dir_colors ]] ; then
+ eval $(dircolors -b ~/.dir_colors)
+ elif [[ -f /etc/DIR_COLORS ]] ; then
+ eval $(dircolors -b /etc/DIR_COLORS)
+ fi
+ fi
+
+ if [[ ${EUID} == 0 ]] ; then
+ PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
+ else
+ PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
+ fi
+
+ alias ls='busybox ls --color=auto'
+else
+ if [[ ${EUID} == 0 ]] ; then
+ # show root@ when we don't have colors
+ PS1='\u@\h \W \$ '
+ else
+ PS1='\u@\h \w \$ '
+ fi
+fi
+
+# Try to keep environment pollution down, EPA loves us.
+unset use_color safe_term match_lhs