Por que meu prompt do Linux mostra um $, em vez do nome de login e do caminho?

11

Em um dos meus servidores, o prompt é [user @ host path] ... e eu posso realmente pressionar "tab" para preencher automaticamente o caminho.

Mas no meu novo servidor Ubuntu, é apenas um cifrão?

    
por Alex 10.11.2009 / 09:46

4 respostas

20

Como você está fazendo duas perguntas, eu respondo as duas.

Por que não guia caminhos de arquivos de preenchimento automático?

Porque o shell não é compatível ou a conclusão da guia não está ativada.

Para resolver isso, você primeiro precisa descobrir qual é o seu shell. Na máquina de que você gosta, corra

echo $SHELL

Você pode ver o comum /bin/bash , ou algo menos comum como /bin/tcsh , /bin/zsh ou algo totalmente diferente.

Agora, você pode mudar seu shell na máquina Ubuntu. Nessa máquina, primeiro certifique-se de que o shell que você quer existe. Como o shell pode não estar no mesmo local na máquina Ubuntu e no outro, verifique o local digitando

 which bash

Isso fornecerá o caminho do shell que você deseja, algo como /bin/bash , /usr/bin/bash ou /usr/local/bin/bash . Claro, se você quiser um shell diferente de bash, você dirá which tcsh , which zsh ou similar.

Se você não vir um caminho, mas em vez disso ver bash not found , será necessário instalar o pacote apropriado e usar novamente which para descobrir onde o shell foi instalado.

Com o caminho do seu shell escolhido, você pode finalmente alterar seu shell executando

chsh -s /bin/bash

substituindo /bin/bash por qualquer que seja o caminho apropriado para o seu shell de escolha.

Por que o prompt é um sinal de dólar em vez de [caminho do usuário @ host]?

Por causa de suas variáveis de ambiente de prompt $PS1 , $PS2 e assim por diante. Essas coisas não costumam ser portáveis entre os shells, então aqui estão alguns links para candidatos prováveis:

bash tem um manual extenso , com páginas em Bash Variables (incluindo PS1 , & c) e Imprimindo uma Solicitação (que descreve PROMPT_COMMAND , o nome longo para PS1 ). Adicione a seguinte linha ao seu ~/.bashrc

export PS1='[\u@\h \w] '

tcsh tem um manual on-line (apenas a página do manual), com uma seção sobre prompt variáveis de ambiente. Adicione a seguinte linha ao seu ~/.tcshrc

set prompt='[%n@%m %~] '

zsh tem um guia do usuário , com um simples guia para os prompts , bem como manual , com uma referência muito detalhada sobre Expansão Prompt . Adicione a seguinte linha ao seu ~/.zshrc

export PS1='[%n@%m %~] '
    
por 10.11.2009 / 15:12
6

O Bash não é o único shell.

Seu problema pode ser uma simples questão de não ter um .profile ou .bashrc que defina o PS1, ou pode ser que seu shell de login não seja bash.

O Bash usa gnu readline para itens como preenchimento de guias. Este é um assunto complicado e readline ainda tem seu próprio arquivo de configuração por usuário.

Veja man bash , man sh e man 3 readline . Bash responde a --version . Em muitos sistemas Linux, /bin/sh não é realmente bash, mas geralmente uma versão aleijada de ash .

    
por 10.11.2009 / 09:59
4

eu acho que você não está usando bash, mas sh e seu prompt não está configurado corretamente (se isso for possível com sh).

você pode obter seu shell atual digitando: echo $SHELL

se você quiser começar o bash, apenas digite bash

    
por 10.11.2009 / 09:48
2

Você precisa definir uma variável chamada PS1 em um dos seus scripts de login, por exemplo, / etc / profile ou ~ / .bashrc. Isso dependerá da sua distribuição.

Exemplo: link

    
por 10.11.2009 / 09:47