DashはBashをデフォルトのシェルに置き換えることができますか?

DashはBashをデフォルトのシェルに置き換えることができますか?

私が知っている限り、次のdashコマンドを使用してシェルにすることができます。

~$ chsh shirish
Password: 
Changing the login shell for shirish
Enter the new value, or press ENTER for the default
    Login Shell [/bin/bash]: 

ダッシュをインストールしてログインシェル/bin/dashへのパスを指定するだけです。これは読まれませんが、.bashrc読むこともできます.profile。これは私のものですが、.bashrcカットして貼り付けることはできますか?.bashrcDash は bash とまったく同じように動作します。

これは私のものです.bashrc

$ cat .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;;
esac

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

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

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=3000
HISTFILESIZE=3000
HISTTIMEFORMAT="%F %T"

# 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)
fi

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

# 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
#force_color_prompt=yes

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.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

# enable bash completion in interactive shells
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
  fi
fi

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

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

# 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   cls='clear'
    alias    ll='ls -l'
    alias aptfn='sudo aptitude forget-new'
    alias  aptn="aptitude search '~N'"
    alias    gi='bash /home/shirish/git-info.sh'
    alias  apto='aptitude search ~o'
    alias  grep='grep --color=auto'
    alias  aptc="aptitude search '~c'"
    alias  copy="rsync --progress -ravz"
    alias   vlc="vlc -vv"
    alias   tor="/home/shirish/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US/start-tor-browser"

    #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'
fi

# some more ls aliases

#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
#fi

# from http://askubuntu.com/questions/16428/showing-a-cowsay-fortune-in-every-new-terminal-session

if [ -x /usr/games/cowsay -a -x /usr/games/fortune ]; then
    fortune | cowsay

答え1

シェルは、スクリプトの実行と対話型コマンドラインの2つの目的に使用されます。

Dash は、高速で効率的なスクリプトシェルとして設計されています。インタラクティブに使用するのに良い機能はほとんどありません。素晴らしいプロンプト、コマンドライン編集機能、またはコマンド履歴はありません。

ダッシュをログインシェルとして使用できます。~/.profile他のBourneスタイルのシェルと同じように読みます(bash関連のシェルが~/.bash_profile存在しない限り、bashはそれを読みます)。また、Dash は、ENVほとんどの最新の Bourne スタイルのシェルのようにインタラクティブに実行されたときにデータを読み込みます。

インタラクティブに使用するには、fish、zsh、bashなどのより強力なシェルを使用してください。.bashrc他のシェルで動作するエイリアス定義を除いて、ほとんどのコードは bash にのみ適用されます。

推奨される背景素材:ログインシェルと非ログインシェルの違いは何ですか?

一部の古いBourneスタイルのシェルは、非対話式で起動するとENVを読みますが、最新バージョンではこれを実行しないようです。 Ashは2001年にこれをやめました。

答え2

あなたの多くの命令は具体的.bashrcですbash。そのようなものはHISTCONTROLそれとは関係ありませんdash。コマンドの完成も同様です。ただし、別名を使用できます。

マンページを読んで、dashマンページで実行されるすべての操作.bashrcに適用されることを確認してくださいdash

dashあなたが尋ねる実際の質問は明確ではありません。単にインストールしますか/bin/sh、またはダッシュをログインシェルとして使用しますか?後者なら、そうchshすることが正しいです。それ以外の場合は、インストールするだけで、インストーラはダッシュをデフォルトのdashシステムシェルに設定するかどうかを尋ねるメッセージを表示します(次に「はい」を選択します)。回答を変更するには、を実行してくださいdpkg-reconfigure dash

答え3

現在のログインシェルを変更せずに簡単に試してみて、機能していることを確認できます。

/etc/profileとは別に、次のように~/.profileインタラクティブで起動すると、環境変数が指すファイルを読み込みます。dashENV

ENV=~/.bashrc dash

または、不要または機能しないものをコピーしてコメントアウト/削除することをお勧めし~/.bashrcます。~/.dashrc好きなものがあれば、1行を追加できます。

ENV=~/.dashrc

自分のものに移動して~/.profileデフォルトのシェルを変更します。

からman dash

 ...   If the environment variable ENV is set on entry to an interac‐
 tive shell, or is set in the .profile of a login shell, the shell next
 reads commands from the file named in ENV.  Therefore, a user should
 place commands that are to be executed only at login time in the
 .profile file, and commands that are executed for every interactive
 shell inside the ENV file.  To set the ENV variable to some file, place
 the following line in your .profile of your home directory

       ENV=$HOME/.shinit; export ENV

 substituting for “.shinit” any filename you wish.

関連情報