Como eu mudo meu shell padrão para o bash se eu não tiver acesso ao chsh nem ao / etc / passwd?

8

Estou trabalhando em uma conta de universidade remota do Linux, e o shell padrão é, infelizmente, csh sem conclusão de tabulação. Como posso alterar o shell padrão da minha conta para bash ? chsh não está disponível.

    
por mcandre 30.08.2012 / 16:16

4 respostas

10

Você provavelmente deve tentar perguntar aos seus administradores se eles podem mudar seu shell padrão para você. Se eles não podem ou não querem (como foi o caso quando eu estava na faculdade), a solução que usei foi adicionar

# Exec bash if using an interactive shell.
if ($?prompt) then
    setenv SHELL /path/to/bash
    exec $SHELL
endif

para .cshrc . (Certifique-se de substituir /path/to/bash por um caminho real, é claro. Isso pode até ser uma versão de bash que reside em seu diretório pessoal, se a versão fornecida pelo sistema estiver muito desatualizada para seu gosto. ) Para eficiência, é melhor fazer isso logo no início do .cshrc , para evitar processamento .cshrc adicional que se tornará irrelevante uma vez bash substitui o processo csh .

    
por 30.08.2012 / 19:07
3

Você pode simplesmente se conectar com

ssh -t yourhost bash

para executar o shell Bash automaticamente quando você efetuar login.

Dos comentários abaixo, você pode ver a alternativa

ssh -t yourhost exec bash

exec executará um novo processo e sairá do antigo, portanto, o processo csh será encerrado diretamente.

Se anexar -l no final do comando como um argumento para o Bash, ele será tratado como um shell de login, mas talvez isso não seja necessário.

    
por 30.08.2012 / 16:26
0

A melhor solução que encontrei foi uma no stackexchange. Aqui está o link stackexchange e aqui está a solução:

crie um arquivo .profile no seu diretório home e cole o seguinte, ou adicione ao final do seu .profile se já tiver um.

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"
      fi
    fi
esac
    
por 22.11.2013 / 18:43
0

eu procurei muito quando você usa a autenticação LADP via PAM, eu acho que a melhor solução é colocar SHELL = / bin / bash exec / bin / bash no arquivo .profile no diretório inicial do usuário

    
por 02.06.2015 / 20:58

Tags