2009-09-25 12:03:09 +0000 2009-09-25 12:03:09 +0000
107
107

Come faccio a rendere Bash la mia shell predefinita su Ubuntu?

Ho un .bash_profile nella mia home directory, ma non viene eseguito al login. Se faccio quanto segue, allora le cose sembrano essere come mi aspetto:

ssh myhost
bash
source ~/.bash_profile

Ma normalmente tutto questo avviene al login. Pensieri?

Risposte (8)

176
176
176
2009-09-25 12:08:58 +0000

Usa:

chsh

Inserisci la tua password e indica il percorso della shell che vuoi usare.

Per Bash sarebbe /bin/bash. Per Zsh sarebbe /usr/bin/zsh.

37
37
37
2009-09-25 12:09:20 +0000

Oltre alla risposta di akira, potete anche modificare il vostro file /etc/passwd per specificare la vostra shell di default.

Troverai una linea come questo esempio:

john:x:1000:1000:john,,,:/home/john:/bin/sh

La shell è specificata alla fine.

4
4
4
2009-09-25 12:14:23 +0000

Potresti controllare il tuo programma terminale. Potrebbe essere configurato per eseguire /bin/sh piuttosto che /bin/bash

Bash esegue .bash\profile solo per le sessioni di login. .bashrc viene eseguito per tutte le sessioni di bash, non solo per quelle di login. Prova a prelevare .bash\profile da .bashrc (evita la dipendenza circolare!) o configura il tuo programma terminale per eseguire /bin/bash -l come un programma di shell.

4
4
4
2018-01-25 18:44:30 +0000

Abilitare bash:

$ /bin/bash

Cambia la shell per l'utente:

$ sudo usermod -s /bin/bash username

dove:

-s, --shell SHELL new login shell for the user account
2
2
2
2010-06-01 11:40:25 +0000

Un'alternativa è rinominare lo script di avvio in .profile. Questo file è fonte della maggior parte delle shell Unix .

1
1
1
2019-11-17 19:17:11 +0000

Se in qualche modo non vedete il vostro nome utente nel file /etc/passwd [questo è il caso quando il vostro sistema è sotto il controllo di qualche altro dominio, ad esempio nelle aziende IT] o dice “utente non trovato” con l'opzione chsh, allora il seguente processo potrebbe aiutarvi.

La logica dietro il seguente trucco -> Su Ubuntu, /bin/sh è dash. Puoi cambiare il tuo sistema per usare bash. Su Ubuntu, /bin/sh è un collegamento simbolico a dash. Per cambiarlo, esegui

sudo dpkg-reconfigure dash

e premi No per passare a bash.

Ora, andate in Terminale-\Modifica-\Preferenze->Comando e spuntate la casella di controllo con la dichiarazione

Esegui comando come shell di login

E questo è tutto.

1
1
1
2019-06-27 13:29:35 +0000

Per rendere qualsiasi shell la tua predefinita, prima verifica che sia installata e riconosciuta sul tuo computer guardando il contenuto di /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

Poi usa chsh per cambiare la tua shell:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

Riferimenti

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh
0
0
0
2018-09-15 19:37:41 +0000

Non ci sono abbastanza informazioni nella tua domanda per poterlo dire con certezza, ma ho avuto lo stesso problema prima. Supponendo che tu abbia già impostato /bin/bash nella tua password, potrebbe essere il modo in cui il tuo terminale viene lanciato.

Se stai cercando di lanciare un terminale GUI, diciamo gnome-terminal potresti aspettarti che la shell legga i tuoi file di avvio di bash. Tuttavia, questo non accade su Ubuntu e forse su altri sistemi per impostazione predefinita.

Il modo in cui ho risolto su Ubuntu è quello di modificare le preferenze di gnome-terminal, e impostare il comando di avvio a bash -l. -l è l'abbreviazione di --login. Questo dice a bash di avviarsi come shell di login, il che gli fa caricare gli script di avvio come quando si accede via ssh.

Sono sicuro che c'è una buona ragione per cui questo è il modo in cui è, ma l'ho trovato sorprendente e più che fastidioso dato che condivido gli stessi profili tra i sistemi linux, cywgin e macos.