Startup UNIX user's files

Three files in your home directory (.profile, .bashrc, .bash_logout) have a special meaning to bash, providing a way for you to set up your account environment automatically when you log in and when you invoke another bash shell, and allowing you to perform commands when you log out. These files may already exist in your home directory, depending on how your system administrator has set up your account. If they don't exist, your account is using only the default system file /etc/profile.


When a UNIX user tries to login to his account, the operating system executes a lot of system files to set up the user account before returning the prompt to the user.

In addition to the system settings, the user might wish to have some specific settings for his own account. To achieve this in UNIX, at the end of the login process, the operating system executes a file at the user level, if present. This file is called profile file. The specific settings which an unix user usually does is:

  • Setting of any environment variable;
  • Setting of any alias.(Though it is always recommended to keep the aliases in a separate file);
  • Setting of PATH variable or any other path variables.

A typical .profile file will look as shown below:

cat $HOME/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
export GTK2_RC_FILES=/home/alioth/.gtkrc-2.0


The .bashrc file is a script that is executed whenever a new terminal session is started in interactive mode. The .bashrc file itself contains a series of configurations for the terminal session. This includes setting up or enabling: colouring, completion, the shell history, command aliases and more.

cat $HOME/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    #alias grep='grep --color=auto'
    #alias fgrep='fgrep --color=auto'
    #alias egrep='egrep --color=auto'

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
export TERM=xterm-256color
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8


The file .bash_logout is read and executed every time a login shell exits. It is provided to round out the capabilities for customizing your environment. If you wanted to execute some commands that remove temporary files from your account or record how much time you have spent logged in to the system then you would place the commands in .bash_logout. This file doesn't have to exist in your account if it isn't there when you log out, then no extra commands are executed.

.emacs.d directory

After Emacs session was started at first you can see .emacs.d directory in your home directory.

GitHub repository cloning

mkdir DVCS
git clone

Symbolic link for Emacs configuration file creation

cd .emacs.d/
ln -s /home/vikky/DVCS/stuff/Emacs/init_fijitsu.el -T init.el
cat init.el

Emacs configuration


M-x package-install [RET] org-bullet [RET]


M-x package-install [RET] voca-builder [RET]

in init.el file next string was added:

(require 'voca-builder) (setq voca-builder/voca-file "home/vikky/DVCS/stuff/") (setq voca-builder/export-file "") (setq voca-builder/current-tag "Study")


M-x package-install [RET] key-chord [RET]

in init.el file next string was added:

(require 'key-chord) (key-chord-mode 1) (key-chord-define-global "QQ" 'voca-builder/search-popup) (key-chord-define-global "FF" 'other-frame) (key-chord-define org-mode-map "DD" 'org-drill) (key-chord-define org-mode-map "AA" 'org-drill-again) (key-chord-define org-mode-map "RR" 'org-drill-resume)


M-x package-install [RET] google-translate [RET]

in init.el file next string was added:

(require 'google-translate) (require 'google-translate-default-ui) (global-set-key "\C-ct" 'google-translate-at-point) (global-set-key "\C-cT" 'google-translate-query-translate) (setq google-translate-default-source-language ' "en") (setq google-translate-default-target-language ' "ru")


M-x package-install [RET] magit [RET]

To display information about the current Git repository, set global key:

(global-set-key (kbd "C-x g") 'magit-status)


M-x package-install [RET] elfeed [RET]

My feed's settings in init.el:

(setq elfeed-feeds '("" "" "" "" "")) ((global-set-key (kbd "C-x w") 'elfeed)

blog comments powered by Disqus


15 November 2017


Debian DevEnv