dotfiles2/base/.mkshrc

162 lines
3.6 KiB
Plaintext
Raw Normal View History

2022-08-06 05:16:17 +00:00
# (mk)shrc
if [ -f /etc/shrc ]; then
2022-08-07 02:46:26 +00:00
. /etc/shrc
2022-08-06 05:16:17 +00:00
fi
2022-08-07 02:27:10 +00:00
export EDITOR=nvim
## Extra paths
if [ -f "$HOME/.cargo/env" ] ; then
. $HOME/.cargo/env
fi
# Python packages go here
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
# Homebrew (macOS)
if [ -d "/opt/homebrew" ] ; then
PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/sbin:/usr/sbin:$PATH"
HOMEBREW_CASK_OPTS="--appdir=~/Applications"
export HOMEBREW_CASK_OPTS
# x86 brew hack
if [ -d "$HOME/.x86_64/homebrew" ] ; then
brew86() {
PATH="$HOME/.x86_64/homebrew/bin:$PATH" arch -x86_64 $HOME/.x86_64/homebrew/bin/brew "$@"
}
fi
fi
# Flutter
if [ -d "$HOME/.opt/flutter" ] ; then
PATH="$HOME/.opt/flutter/bin:$PATH"
fi
# Android SDK (for VMs)
if [ -d "$HOME/Library/Android/sdk" ] ; then
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/platform-tools:$PATH"
fi
export PATH
2022-08-06 05:16:17 +00:00
# Force 256color term for screen
if [ "$TERM" = "screen" ] ; then
TERM="screen-256color"
export TERM
fi
export LANG=
export LC_ALL=en_US.UTF-8
## Ripped from a custom /etc/shrc, not very useful here
2022-08-07 02:27:10 +00:00
if [ -z "$UID" ] ; then
UID="$(id -u)"
fi
BRL="["
BRR=""
if [ -n "$BASH_VERSION" ] ; then
BRL="\\[\\\\033["
BRR="\\]"
fi
2022-08-06 05:16:17 +00:00
if [ "$UID" -eq "0" ] ; then
PROMPT="#"
2022-08-07 02:27:10 +00:00
USER_COLOR="${BRL}31m${BRR}"
2022-08-06 05:16:17 +00:00
else
PROMPT="$"
2022-08-07 02:27:10 +00:00
USER_COLOR="${BRL}96m${BRR}"
2022-08-06 05:16:17 +00:00
fi
2022-08-07 02:27:10 +00:00
getrv() {
# HACK: Since the if statement in get_ps1 will clobber the old
# return value, KSH passes a cached version of the old val along
# so we can use it here.
rv=${1:-$?}
if [ "$rv" -ne "0" -a "$rv" -ne "130" ] ; then
printf "$rv | "
fi
}
2022-08-06 05:16:17 +00:00
get_ps1() {
2022-08-07 02:27:10 +00:00
# Bash uses a static version of this, so we have to make a couple
# changes for post-processing
2022-08-06 05:16:17 +00:00
rv=$?
2022-08-07 02:27:10 +00:00
if [ -n "$BASH_VERSION" ] ; then
printf '$(getrv)'
else
getrv $rv
2022-08-06 05:16:17 +00:00
fi
2022-08-07 02:27:10 +00:00
2022-08-06 05:16:17 +00:00
if [ -n "$SSH_TTY" ] ; then
2022-08-07 02:27:10 +00:00
printf "${BRL}33m${BRR}[SSH] "
2022-08-06 05:16:17 +00:00
fi
2022-08-07 02:27:10 +00:00
printf "${USER_COLOR}${HOST%%.*}:${BRL}39m${BRR}";
if [ -n "$BASH_VERSION" ] ; then
printf "\w"
elif [[ "${PWD#$HOME}" != "$PWD" ]] ; then
printf "~${PWD#$HOME}"
2022-08-06 05:16:17 +00:00
else
2022-08-07 02:27:10 +00:00
printf "$PWD"
2022-08-06 05:16:17 +00:00
fi
2022-08-07 02:27:10 +00:00
printf "${USER_COLOR} ${PROMPT}${BRL}0m${BRR} "
2022-08-06 05:16:17 +00:00
}
case "$-" in *i*)
2022-08-07 02:46:26 +00:00
# interactive mode settings go here
if /bin/test -z "${HOST}"; then
HOST="$(hostname)"
fi
2022-08-07 02:27:10 +00:00
PS1='$(get_ps1)'
2022-08-07 02:46:26 +00:00
set -o emacs
2022-08-07 02:27:10 +00:00
2022-08-07 02:46:26 +00:00
# This file is used by shells that might not support
# set -o tabcomplete, so check before trying to use it.
( set -o tabcomplete 2>/dev/null ) && set -o tabcomplete
2022-08-06 05:16:17 +00:00
2022-08-07 02:27:10 +00:00
if command -v xclip >/dev/null ; then
alias ctop='xclip -selection clipboard -out | xclip -selection primary -in'
alias ptoc='xclip -selection primary -out | xclip -selection primary -in'
fi
2022-08-06 05:16:17 +00:00
alias define='dict'
2022-08-07 02:27:10 +00:00
if command -v nvim >/dev/null ; then
alias vim='nvim'
fi
2022-08-06 05:16:17 +00:00
# Hack to bubble up profile, see bin/tmux-shim
alias tmux="$HOME/bin/tmux-shim"
2022-08-07 02:27:10 +00:00
# Set bash PS1
if [ -n "$BASH_VERSION" ] ; then
PS1="$(get_ps1)"
export PS1
elif [ "${KSH_VERSION:-notksh}" != "notksh" ] ; then
2022-08-06 05:16:17 +00:00
[[ "${KSH_VERSION}" == *"MIRBSD KSH"* ]] && bind '^L=clear-screen'
else
hn="$(hostname)"
PS1='${hn}:${PWD} \$ '
fi
2022-08-07 02:27:10 +00:00
# Tiny helper functions
2022-08-06 05:16:17 +00:00
calc()
{
echo "$@" | bc
}
nconv()
{
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
echo "usage: nconv [from-base] [to-base] [num]" >&2
return 1
fi
echo "obase=$2; ibase=$1; $3" | bc
}
2022-08-07 02:46:26 +00:00
;;
2022-08-06 05:16:17 +00:00
esac