Como altero meu shell padrão para bash se não tenho acesso ao chsh nem ao / etc / passwd?
8
Estou trabalhando em uma conta remota do Linux para uma universidade, e o shell padrão é infelizmente cshsem conclusão de guia. Como posso alterar o shell padrão da minha conta bash? chshnão está disponível.
Qual sistema a universidade usa para armazenar contas? ldapmodifypode funcionar.
user1686
Ou, se eles estiverem usando o NIS, ypchshdeve ser o comando apropriado.
M000
Se você quer apenas o preenchimento de tabulação, você pode adicioná-los ao seu ~ / .cshrc set filece set autolist.
Hennes
Respostas:
11
Você provavelmente deve perguntar aos seus administradores de sistema se eles podem alterar seu shell padrão para você. Se eles não podem ou não (como era o caso quando eu estava na faculdade), a solução alternativa 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/bashpor um caminho real, é claro. Essa pode até ser uma versão bashque reside no diretório inicial, se a versão fornecida pelo sistema estiver muito desatualizada para o seu gosto.) Para maior eficiência, é melhor fazer isso o mais cedo .cshrcpossível, para evitar o .cshrcprocessamento adicional que se tornará discutível uma vez que bashsubstitua o cshprocesso.
ssh -t yourhost exec -a bash -l bashsubstituir completamente o shell original, em vez de executar como um processo dentro do shell inicial.
chepner
@chepner: Interessante, estou usando uma ssh -t host bashsolução simples em uma situação semelhante, mas seu caminho é melhor. Não pensei nisso exec, obrigado! Vou atualizar a postagem com sua sugestão.
Daniel Andersson
Fiquei um pouco chocado, no entanto, usando argumentos para o bashcomando interno exec.
Chepner
@chepner: Ah sim, eu tentei agora em um host com zsh como shell padrão e ele falhar em ambos -ae -l. Vou modificar o exemplo na minha resposta.
Daniel Andersson
0
A melhor solução que encontrei foi sobre stackexchange. Aqui está o link stackexchange e aqui está a solução:
crie um arquivo .profile no seu diretório pessoal e cole o seguinte, ou adicione ao final do seu .profile se você 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"fifiesac
Eu pesquisei muito quando você está usando autenticação LADP via PAM, acho que a melhor solução é colocar SHELL = / bin / bash exec / bin / bash no arquivo .profile no diretório inicial do usuário
ldapmodify
pode funcionar.ypchsh
deve ser o comando apropriado.set filec
eset autolist
.Respostas:
Você provavelmente deve perguntar aos seus administradores de sistema se eles podem alterar seu shell padrão para você. Se eles não podem ou não (como era o caso quando eu estava na faculdade), a solução alternativa que usei foi adicionar
para
.cshrc
. (Certifique-se de substituir/path/to/bash
por um caminho real, é claro. Essa pode até ser uma versãobash
que reside no diretório inicial, se a versão fornecida pelo sistema estiver muito desatualizada para o seu gosto.) Para maior eficiência, é melhor fazer isso o mais cedo.cshrc
possível, para evitar o.cshrc
processamento adicional que se tornará discutível uma vez quebash
substitua ocsh
processo.fonte
Você pode simplesmente se conectar com
para executar o shell Bash automaticamente quando você efetuar login.
Nos comentários abaixo, você pode ver a alternativa
exec
executará um novo processo e sairá do antigo, portanto, ocsh
processo será encerrado diretamente.Se anexar
-l
no final do comando como argumento ao Bash, ele será tratado como um shell de login, mas talvez isso não seja necessário.fonte
ssh -t yourhost exec -a bash -l bash
substituir completamente o shell original, em vez de executar como um processo dentro do shell inicial.ssh -t host bash
solução simples em uma situação semelhante, mas seu caminho é melhor. Não pensei nissoexec
, obrigado! Vou atualizar a postagem com sua sugestão.bash
comando internoexec
.-a
e-l
. Vou modificar o exemplo na minha resposta.A melhor solução que encontrei foi sobre stackexchange. Aqui está o link stackexchange e aqui está a solução:
crie um arquivo .profile no seu diretório pessoal e cole o seguinte, ou adicione ao final do seu .profile se você já tiver um.
fonte
Eu pesquisei muito quando você está usando autenticação LADP via PAM, acho que a melhor solução é colocar SHELL = / bin / bash exec / bin / bash no arquivo .profile no diretório inicial do usuário
fonte