Ho un .bash_profile
nella mia directory home, ma non viene eseguito all'accesso. Se faccio quanto segue, allora le cose sembrano essere come mi aspetto:
ssh myhost
bash
source ~/.bash_profile
Ma normalmente succede tutto al login. Pensieri?
Ho un .bash_profile
nella mia directory home, ma non viene eseguito all'accesso. Se faccio quanto segue, allora le cose sembrano essere come mi aspetto:
ssh myhost
bash
source ~/.bash_profile
Ma normalmente succede tutto al login. Pensieri?
Risposte:
Uso:
chsh
Immettere la password e indicare il percorso della shell che si desidera utilizzare.
Per Bash sarebbe /bin/bash
. Per Zsh sarebbe /usr/bin/zsh
.
sudo chsh -s /bin/bash username
Oltre alla risposta di Akira, puoi anche modificare il tuo file / etc / passwd per specificare la tua shell predefinita.
Troverai una linea come questo esempio:
john:x:1000:1000:john,,,:/home/john:/bin/sh
La shell è specificata alla fine.
/etc/passwd
e stai attento, la risposta di John sta facendo buon uso degli strumenti forniti dal sistema.
È possibile controllare il programma terminale. Potrebbe essere configurato per eseguire / bin / sh anziché / bin / bash
Bash esegue .bash_profile solo per sessioni di accesso. .bashrc viene eseguito per tutte le sessioni bash, non solo per le sessioni di accesso. Prova a trovare .bash_profile da .bashrc (evita la dipendenza circolare!) O configura il tuo programma terminale per eseguire / bin / bash -l come programma shell.
Abilita bash:
$ /bin/bash
Cambia shell per l'utente:
$ sudo usermod -s /bin/bash username
dove:
-s, --shell SHELL new login shell for the user account
sudo
accesso a quel sistema? Perché fornisci istruzioni in termini di modifica della shell di accesso di un altro utente?
Un'alternativa è rinominare lo script di avvio in .profile. Questo file è stato creato dalla maggior parte delle shell Unix .
Per rendere qualsiasi shell predefinita, verifica innanzitutto 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
Quindi utilizzare chsh
per modificare la shell:
$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)
Non ci sono abbastanza informazioni nella tua domanda da dire con certezza, ma ho già riscontrato lo stesso problema. Supponendo che tu abbia già / bin / bash impostato nella tua password, potrebbe essere il modo in cui il tuo terminale si avvia.
Se stai cercando di avviare un terminale GUI, supponi gnome-terminal
che potresti aspettarti che la shell legga i tuoi file di avvio di bash. Tuttavia, ciò non accade su Ubuntu e forse altri sistemi per impostazione predefinita.
Il modo in cui l'ho risolto su Ubuntu è modificare le preferenze di gnome-terminal e impostare il comando di avvio su 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 quando si accede tramite ssh.
Sono sicuro che ci sia una buona logica per essere così com'è, ma l'ho trovato sorprendente e un po 'più fastidioso dato che condivido gli stessi profili su sistemi Linux, Cywgin e Macos.
~/.profile
o~/.bash_login
, poiché solo uno dei tre è di provenienza. (Ho dimenticato l'ordine esatto.)