No sistema de desktop Ubuntu 15.10 da minha empresa, eu efetuo login via Active Directory usando alguma mágica baseada em PBIS . Assim, minha conta de usuário não está listada em / etc / passwd, embora eu tenha um diretório home em /home/local/FOOBAR/dotancohen/
. Como posso configurar o bash como o shell quando não há uma linha / etc / passwd para editar e, portanto, não posso usar chsh
?
Eu tenho outra conta nesta máquina com acesso de administrador, para que eu possa configurar o sistema como administrador, se necessário. No entanto, se houver uma solução somente para usuário, eu prefiro isso para uso no futuro quando não tiver acesso de administrador!
Aqui estão os resultados de alguns comandos importantes, executados a partir da abertura do Gnome Terminal no Unity (a área de trabalho do Ubuntu):
$ echo $HOME
/home/local/TECHMARKETING/dotan
$ whoami
FOOBAR\dotancohen
$ grep dotan /etc/passwd
$ grep sourced ~/.profile
echo 'sourced .profile'
$ grep sourced ~/.bashrc
echo "sourced .bashrc"
$ echo $SHELL
/bin/sh
$ echo $TERM
xterm
$ bash
sourced .bashrc
- dotan-tm():~$ echo $SHELL
/bin/sh
- dotan-tm():~$ echo $TERM
xterm-256color
Como pode ser visto, tanto .bashrc
quanto .profile
ecoam quando foram adquiridos. Parece que .profile
não é executado quando o shell padrão é iniciado, mas .bashrc
é executado quando o bash é iniciado. Eu usei esta resposta para abrir o bash do dash, mas como .profile
não é executado obviamente esse script não está tendo nenhum efeito.
Aqui está o meu arquivo ~/.profile
completo para referência:
$ cat .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"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.bin" ] ; then
PATH="$HOME/.bin:$PATH"
fi
xmodmap ~/.Xmodmap
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash" -l
fi
fi
esac
echo 'sourced .profile'
$