From 6eb00d65d5732bbb025d573422adab5e3ca74dcc Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Mon, 4 Jun 2018 23:10:09 +0300 Subject: attempt to organize stuff properly bash-independent stuff should go to .profile, which is what I'm trying to do. I'm not sure about how correct all of this is, a few bashisms were ought to creep in. --- %HOME%/.bash_profile | 3 ++- %HOME%/.bash_utils/python.sh | 43 ------------------------------- %HOME%/.bash_utils/ruby.sh | 20 --------------- %HOME%/.bashrc | 9 ------- %HOME%/.profile | 61 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 73 deletions(-) delete mode 100644 %HOME%/.bash_utils/python.sh delete mode 100644 %HOME%/.bash_utils/ruby.sh create mode 100644 %HOME%/.profile diff --git a/%HOME%/.bash_profile b/%HOME%/.bash_profile index b42f274..fe1b4b5 100644 --- a/%HOME%/.bash_profile +++ b/%HOME%/.bash_profile @@ -1,4 +1,5 @@ -[ -r "$HOME/.bashrc" ] && source "$HOME/.bashrc" +[ -r "$HOME/.profile" ] && source "$HOME/.profile" +[ -r "$HOME/.bashrc" ] && source "$HOME/.bashrc" echo "Welcome to $( hostname )" diff --git a/%HOME%/.bash_utils/python.sh b/%HOME%/.bash_utils/python.sh deleted file mode 100644 index ff394d6..0000000 --- a/%HOME%/.bash_utils/python.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2017 Egor Tensin -# This file is part of the "Linux/Cygwin environment" project. -# For details, see https://github.com/egor-tensin/linux-home. -# Distributed under the MIT License. - -# This is a half-assed way to automatically add your user's pip binary -# directory to $PATH. - -python_setup_() ( - set -o errexit -o nounset -o pipefail - - if [ "$#" -ne 1 ]; then - echo "usage: ${FUNCNAME[0]} PYTHON_EXE" - return 1 - fi - - local python="$1" - - local user_base - user_base="$( "$python" -m site --user-base )" - - local user_bin="$user_base/bin" - [ -d "$user_bin" ] || return 1 - echo "$user_bin" -) - -python_setup() { - local user_bin - - if command -v python3 &> /dev/null; then - user_bin="$( python_setup_ python3 )" \ - && path_export "$user_bin" - elif command -v python &> /dev/null; then - user_bin="$( python_setup_ python )" \ - && path_export "$user_bin" - fi -} - -python_setup - -[ -r "$HOME/.pythonrc" ] && export PYTHONSTARTUP="$HOME/.pythonrc" diff --git a/%HOME%/.bash_utils/ruby.sh b/%HOME%/.bash_utils/ruby.sh deleted file mode 100644 index 8d0b74a..0000000 --- a/%HOME%/.bash_utils/ruby.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2016 Egor Tensin -# This file is part of the "Linux/Cygwin environment" project. -# For details, see https://github.com/egor-tensin/linux-home. -# Distributed under the MIT License. - -ruby_setup() { - local user_dir - local bin_dir - - command -v ruby &> /dev/null \ - && command -v gem &> /dev/null \ - && user_dir="$( ruby -e 'puts Gem.user_dir' )" \ - && export GEM_HOME="$user_dir" \ - && bin_dir="$( ruby -e 'puts Gem.bindir' )" \ - && path_export "$bin_dir" -} - -ruby_setup diff --git a/%HOME%/.bashrc b/%HOME%/.bashrc index b23fc09..3ba8086 100644 --- a/%HOME%/.bashrc +++ b/%HOME%/.bashrc @@ -78,17 +78,8 @@ if os_is_cygwin; then alias ming++='x86_64-w64-mingw32-g++' fi -if command -v vim > /dev/null 2>&1; then - export EDITOR=vim -elif command -v nano > /dev/null 2>&1; then - export EDITOR=nano -fi - # I've bumped into this on Linux Mint: Ctrl+S causes my terminal to freeze # completely (Ctrl+Q is a temporary escape, stty is the cure). os_is_cygwin \ || command -v stty > /dev/null 2>&1 \ && stty -ixon - -command -v path_export > /dev/null 2>&1 \ - && path_export "$HOME/.local/bin" diff --git a/%HOME%/.profile b/%HOME%/.profile new file mode 100644 index 0000000..401947b --- /dev/null +++ b/%HOME%/.profile @@ -0,0 +1,61 @@ +if command -v vim > /dev/null 2>&1; then + export EDITOR=vim +elif command -v nano > /dev/null 2>&1; then + export EDITOR=nano +fi + +path_export() { + local path + for path; do + case "${PATH-}" in + "$path") continue ;; + *":$path") continue ;; + "$path:"*) continue ;; + *":$path:"*) continue ;; + esac + export PATH="$path:${PATH-}" + done +} + +path_export "$HOME/.local/bin" + +# Ruby-specific stuff + +# This is a half-assed way to automatically add your user's gem binary +# directory to $PATH (also setting GEM_HOME). + +ruby_setup() { + local user_dir + local bin_dir + + command -v ruby > /dev/null 2>&1 \ + && command -v gem > /dev/null 2>&1 \ + && user_dir="$( ruby -e 'puts Gem.user_dir' )" \ + && export GEM_HOME="$user_dir" \ + && bin_dir="$( ruby -e 'puts Gem.bindir' )" \ + && path_export "$bin_dir" +} + +ruby_setup + +# Python-specific stuff + +# This is a half-assed way to automatically add your user's pip binary +# directory to $PATH. + +python_setup() { + local python + local user_base + for python; do + command -v "$python" > /dev/null 2>&1 \ + && user_base="$( "$python" -m site --user-base )" \ + && [ -d "$user_base/bin" ] \ + && path_export "$user_base/bin" \ + && continue + break + done +} + +python_setup python3 python + +[ -r "$HOME/.pythonrc" ] && export PYTHONSTARTUP="$HOME/.pythonrc" -- cgit v1.2.3