ホームディレクトリに.bash_profile
がありますが、ログイン時には実行されません。私が以下のことをした場合、それは私が期待している通りのことです。
ssh myhost
bash
source ~/.bash_profile
しかし、通常はすべてログイン時に行われます。考えですか?
つかいます:
chsh
パスワードを入力して、使用したいシェルへのパスを入力します。
Bashの場合、それは/bin/bash
になります。 Zshの場合、これは/usr/bin/zsh
になります。
Akiraの答えに加えて、あなたのデフォルトのシェルを指定するためにあなたの / etc/passwd ファイルを編集することもできます。
この例のような行が見つかります。
john:x:1000:1000:john,,,:/home/john:/bin/sh
シェルは最後に指定されています。
端末プログラムを確認してください。/bin/bashではなく/ bin/shを実行するように設定されている可能性があります。
Bashはログインセッションに対してのみ.bash_profileを実行します。 .bashrcは、ログインセッションだけでなく、すべてのbashセッションに対して実行されます。 .bashrcから.bash_profileを読み込む(循環依存を避けてください)か、シェルプログラムとして/ bin/bash -lを実行するようにターミナルプログラムを設定してください。
Bashを有効にする:
$ /bin/bash
ユーザーのシェルを変更します。
$ Sudo usermod -s /bin/bash username
ここで、
-s, --Shell SHELL new login Shell for the user account
もう1つの方法は、起動スクリプトの名前を.profileに変更することです。このファイルはほとんどの Unixシェル によってソースされています。
シェルをデフォルトにするには、まず/etc/shells
の内容を見て、コンピューターにシェルがインストールされて認識されていることを確認します。
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish
次に、chsh
を使用してシェルを変更します。
$ Sudo chsh -s /usr/bin/bash $(whoami) # or Sudo chsh -s /bin/bash $(whoami)
あなたの質問には、私が確実に言うのに十分な情報はありませんが、私は以前に同じ問題に遭遇しました。パスワードエントリに/ bin/bashが既に設定されていると仮定すると、それがあなたの端末の起動方法かもしれません。
あなたがGUI端末を立ち上げようとしているなら、gnome-terminal
と言って、シェルがあなたのbash起動ファイルを読むことを期待しているかもしれません。しかし、これはUbuntuや他のシステムではデフォルトでは起こりません。
Ubuntuで修正した方法は、gnome-terminalの設定を編集して、起動コマンドをbash -l
に設定することです。 -l
は--login
の短縮形です。これは、bashにlogin Shellとして起動するように指示します。これにより、ssh経由でログインしたときに取得した起動スクリプトがロードされます。
これがそのようなやり方であることには正当な理論的根拠があると確信していますが、Linux、cywgin、macosの各システムで同じプロファイルを共有しているので、驚くべきことで少し面倒です。