| # Check for interactive bash and that we haven't already been sourced. | |
| if [ -n "$BASH_VERSION" -a -n "$PS1" -a -z "$BASH_COMPLETION_COMPAT_DIR" ]; then | |
| # Check for recent enough version of bash. | |
| bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.} | |
| if [ $bmajor -gt 4 ] || [ $bmajor -eq 4 -a $bminor -ge 1 ]; then | |
| [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \ | |
| . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" | |
| if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then | |
| # Source completion code. | |
| . /usr/share/bash-completion/bash_completion | |
| fi | |
| fi | |
| unset bash bmajor bminor | |
| fi |
| :~$ vim /etc/profile.d/ | |
| bash_completion.sh Z97-byobu.sh Z99-cloud-locale-test.sh |
| if [ "$PS1" ]; then | |
| if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then | |
| # The file bash.bashrc already sets the default PS1. | |
| # PS1='\h:\w\$ ' | |
| if [ -f /etc/bash.bashrc ]; then | |
| . /etc/bash.bashrc | |
| fi | |
| else | |
| if [ "`id -u`" -eq 0 ]; then | |
| PS1='# ' | |
| else | |
| PS1='$ ' | |
| fi | |
| fi | |
| fi | |
| # The default umask is now handled by pam_umask. | |
| # See pam_umask(8) and /etc/login.defs. | |
| if [ -d /etc/profile.d ]; then | |
| for i in /etc/profile.d/*.sh; do | |
| if [ -r $i ]; then | |
| . $i | |
| fi | |
| done | |
| unset i | |
| fi |
| #!/bin/sh | |
| # Z97-byobu.sh - allow any user to opt into auto-launching byobu | |
| # Copyright (C) 2011 Canonical Ltd. | |
| # | |
| # Authors: Dustin Kirkland <kirkland@byobu.co> | |
| # | |
| # This program is free software: you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation, version 3 of the License. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| # Allow any user to opt into auto-launching byobu by setting LC_BYOBU=1 | |
| # Apologies for borrowing the LC_BYOBU namespace, but: | |
| # a) it's reasonable to assume that no one else is using LC_BYOBU | |
| # b) LC_* is sent and receieved by most /etc/ssh/ssh*_config | |
| if [ -n "$LC_BYOBU" ] && [ "$LC_BYOBU" -gt 0 ] && [ -r "/usr/bin/byobu-launch" ]; then | |
| . /usr/bin/byobu-launch | |
| elif [ "$LC_TERMTYPE" = "byobu" ] && [ -r "/usr/bin/byobu-launch" ]; then | |
| . /usr/bin/byobu-launch | |
| elif [ "$LC_TERMTYPE" = "byobu-screen" ] && [ -r "/usr/bin/byobu-launch" ]; then | |
| export BYOBU_BACKEND="screen" | |
| . /usr/bin/byobu-launch | |
| elif [ "$LC_TERMTYPE" = "byobu-tmux" ] && [ -r "/usr/bin/byobu-launch" ]; then | |
| export BYOBU_BACKEND="tmux" | |
| . /usr/bin/byobu-launch | |
| fi | |
| # vi: syntax=sh ts=4 noexpandtab |
| #!/bin/sh | |
| # vi: ts=4 noexpandtab | |
| # | |
| # Author: Ben Howard <ben.howard@canonical.com> | |
| # Author: Scott Moser <scott.moser@ubuntu.com> | |
| # (c) 2012, Canonical Group, Ltd. | |
| # | |
| # Purpose: Detect invalid locale settings and inform the user | |
| # of how to fix them. | |
| # | |
| locale_warn() { | |
| local bad_names="" bad_lcs="" key="" val="" var="" vars="" | |
| local w1 w2 w3 w4 remain | |
| # if shell is zsh, act like sh only for this function (-L). | |
| # The behavior change will not permenently affect user's shell. | |
| [ "${ZSH_NAME+zsh}" = "zsh" ] && emulate -L sh | |
| # locale is expected to output either: | |
| # VARIABLE= | |
| # VARIABLE="value" | |
| # locale: Cannot set LC_SOMETHING to default locale | |
| while read -r w1 w2 w3 w4 remain; do | |
| case "$w1" in | |
| locale:) bad_names="${bad_names} ${w4}";; | |
| *) | |
| key=${w1%%=*} | |
| val=${w1#*=} | |
| val=${val#\"} | |
| val=${val%\"} | |
| vars="${vars} $key=$val";; | |
| esac | |
| done | |
| for bad in $bad_names; do | |
| for var in ${vars}; do | |
| [ "${bad}" = "${var%=*}" ] || continue | |
| val=${var#*=} | |
| [ "${bad_lcs#* ${val}}" = "${bad_lcs}" ] && | |
| bad_lcs="${bad_lcs} ${val}" | |
| break | |
| done | |
| done | |
| bad_lcs=${bad_lcs# } | |
| [ -n "$bad_lcs" ] || return 0 | |
| printf "_____________________________________________________________________\n" | |
| printf "WARNING! Your environment specifies an invalid locale.\n" | |
| printf " This can affect your user experience significantly, including the\n" | |
| printf " ability to manage packages. You may install the locales by running:\n\n" | |
| local bad invalid="" to_gen="" sfile="/usr/share/i18n/SUPPORTED" | |
| local pkgs="" | |
| if [ -e "$sfile" ]; then | |
| for bad in ${bad_lcs}; do | |
| grep -q -i "${bad}" "$sfile" && | |
| to_gen="${to_gen} ${bad}" || | |
| invalid="${invalid} ${bad}" | |
| done | |
| else | |
| printf " sudo apt-get install locales\n" | |
| to_gen=$bad_lcs | |
| fi | |
| to_gen=${to_gen# } | |
| local pkgs="" | |
| for bad in ${to_gen}; do | |
| pkgs="${pkgs} language-pack-${bad%%_*}" | |
| done | |
| pkgs=${pkgs# } | |
| if [ -n "${pkgs}" ]; then | |
| printf " sudo apt-get install ${pkgs# }\n" | |
| printf " or\n" | |
| printf " sudo locale-gen ${to_gen# }\n" | |
| printf "\n" | |
| fi | |
| for bad in ${invalid}; do | |
| printf "WARNING: '${bad}' is an invalid locale\n" | |
| done | |
| printf "To see all available language packs, run:\n" | |
| printf " apt-cache search \"^language-pack-[a-z][a-z]$\"\n" | |
| printf "To disable this message for all users, run:\n" | |
| printf " sudo touch /var/lib/cloud/instance/locale-check.skip\n" | |
| printf "_____________________________________________________________________\n\n" | |
| # only show the message once | |
| : > ~/.cloud-locale-test.skip 2>/dev/null || : | |
| } | |
| [ -f ~/.cloud-locale-test.skip -o -f /var/lib/cloud/instance/locale-check.skip ] || | |
| locale 2>&1 | locale_warn | |
| unset locale_warn |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment