Você sempre pode digitar pwdpara imprimir o nome do diretório de trabalho atual. E você está dizendo que o preenchimento de guias também não está funcionando? (Em algumas máquinas que eu uso, recebo esse breve prompt apenas se eu fizer login como root e, felizmente, deixo isso como um bom aviso. Como raramente, se é que alguma vez, é necessário fazer login como root: você não está usando root , é você)?
Arjan
Alex, você pode nos dizer qual distro você está usando?
Invert '
Estou usando o Ubuntu.
1028 Alex
O ultimo Ubuntu? E você está dizendo que o preenchimento de guias também não está funcionando?
Arjan
Você parece estar fazendo duas perguntas: por que a guia não preenche automaticamente o caminho e por que o prompt é apenas um cifrão em vez de [caminho do usuário @ host]. É um pouco difícil votar em respostas, pois nenhuma responde a ambas.
21119 Joseph Holsten
Respostas:
27
Como você está fazendo duas perguntas, eu responderei as duas.
Por que a guia não preenche automaticamente os caminhos de arquivo?
Como o shell não é compatível ou a conclusão da guia não está ativada.
Para resolver isso, primeiro você precisa descobrir qual é o seu shell. Na máquina cujo shell você gosta, execute
echo $SHELL
Você pode ver o comum /bin/bash, ou algo menos comum /bin/tcsh, /bin/zshou algo completamente diferente.
Agora, você pode alterar seu shell na máquina Ubuntu. Nessa máquina, primeiro verifique se o shell que você deseja existe. Como o shell pode não estar no mesmo local na máquina Ubuntu e no outro, verifique o local digitando
which bash
Isto lhe dará o caminho do shell que você quer, algo como /bin/bash, /usr/bin/bashou /usr/local/bin/bash. Claro, se você quer um shell diferente do bash, você vai dizer which tcsh, which zshou similar.
Se você não vir um caminho, mas sim bash not found, então precisará instalar o pacote apropriado e usar novamente whichpara descobrir onde o shell foi instalado.
Com o caminho do seu shell escolhido, você pode finalmente mudar seu shell executando
chsh -s /bin/bash
substituindo /bin/bashpor qualquer que seja o caminho apropriado para o seu shell de escolha.
Por que o prompt é um cifrão em vez de [user @ host path]?
Por causa de suas variáveis de ambiente rápidas $PS1, $PS2e assim por diante. Como essas coisas não costumam ser portáveis entre as conchas, aqui estão alguns links para possíveis candidatos:
bashpossui um manual extenso , com páginas sobre variáveis bash (incluindo PS1, etc.) e Printing a Prompt (que descreve PROMPT_COMMANDo nome longo para PS1). Adicione a seguinte linha ao seu~/.bashrc
export PS1='[\u@\h \w] '
tcshpossui um manual on - line (apenas sua página de manual ), com uma seção sobre variáveis de ambiente de prompt . Adicione a seguinte linha ao seu~/.tcshrc
Seu problema pode ser uma simples questão de não ter um .profile ou .bashrc que defina o PS1, ou pode ser que o seu shell de logon não seja de todo.
O Bash usa gnu readlinepara coisas como conclusão de guias. Este é um assunto complicado e a linha de leitura ainda tem seu próprio arquivo de configuração por usuário.
Ver man bash, man she man 3 readline. Bash responde --version. Em muitos sistemas linux, /bin/shnão é realmente bash, mas geralmente uma versão aleijada do ash.
não em dashvez de ash? eu pensei que eu li algo assim
knittl
2
+1 por não ter um .profile ou .bashrc - a menos que Alex tenha configurado sua conta quando instalou o Ubuntu, então, por padrão, novos usuários não têm um .bashrc / não têm o PS1 definido.
Cory Plastek
4
Eu acho que você não está usando o bash, mas sh e seu prompt não está definido corretamente (se isso é possível com sh).
você pode obter seu shell atual digitando: echo $SHELL
Você pode definir o prompt com outras conchas. Não existe um shell chamado sh. O eco $SHELLimprimirá uma variável de ambiente chamada SHELL. Essa variável de ambiente simplesmente aponta para o shell e é definida apenas pelo bash. É praticamente inútil determinar qual shell está sendo executado, pois apenas indica, fracamente, que algum pai do processo atual pode ter sido danificado.
DigitalRoss
bem, o nome do programa do shell é sh (em / bin / sh). e sim, echo $ SHELL imprimirá a variável SHELL que geralmente é definida.
knittl
Todo sistema unix tem um executável chamado /bin/shsim. Mas não conheço nenhuma concha cujo nome seja sh. Eu posso pensar de ash, ksh, csh, bash, zsh, e tcsh. O primeiro é o usual / bin / sh no linux e no NetBSD, o último é o shell FreeBSD usual, e os outros são shells opcionais. Muitos ambientes de desktop alteram o shell de login do usuário para bash, deixando / bin / sh como ash.
DigitalRoss
2
@DigitalRoss shé o shell Bourne. pt.wikipedia.org/wiki/Bourne_shell Alguns sistemas (Solaris) ainda vêm com uma versão do shell Bourne que não é apenas uma cópia de uma das reimplementações (ash, dash, bash, ksh, zsh).
31720 Chris Johnsen
... e o bash é conhecido como "Bourne again shell", que herdou alguns recursos do Bourne shell, csh e ksh.
Invert '
2
Você precisa definir uma variável chamada PS1 em um dos seus scripts de login, por exemplo / etc / profile ou ~ / .bashrc. Depende da sua distribuição.
pwd
para imprimir o nome do diretório de trabalho atual. E você está dizendo que o preenchimento de guias também não está funcionando? (Em algumas máquinas que eu uso, recebo esse breve prompt apenas se eu fizer login como root e, felizmente, deixo isso como um bom aviso. Como raramente, se é que alguma vez, é necessário fazer login como root: você não está usando root , é você)?Respostas:
Como você está fazendo duas perguntas, eu responderei as duas.
Por que a guia não preenche automaticamente os caminhos de arquivo?
Como o shell não é compatível ou a conclusão da guia não está ativada.
Para resolver isso, primeiro você precisa descobrir qual é o seu shell. Na máquina cujo shell você gosta, execute
Você pode ver o comum
/bin/bash
, ou algo menos comum/bin/tcsh
,/bin/zsh
ou algo completamente diferente.Agora, você pode alterar seu shell na máquina Ubuntu. Nessa máquina, primeiro verifique se o shell que você deseja existe. Como o shell pode não estar no mesmo local na máquina Ubuntu e no outro, verifique o local digitando
Isto lhe dará o caminho do shell que você quer, algo como
/bin/bash
,/usr/bin/bash
ou/usr/local/bin/bash
. Claro, se você quer um shell diferente do bash, você vai dizerwhich tcsh
,which zsh
ou similar.Se você não vir um caminho, mas sim
bash not found
, então precisará instalar o pacote apropriado e usar novamentewhich
para descobrir onde o shell foi instalado.Com o caminho do seu shell escolhido, você pode finalmente mudar seu shell executando
substituindo
/bin/bash
por qualquer que seja o caminho apropriado para o seu shell de escolha.Por que o prompt é um cifrão em vez de [user @ host path]?
Por causa de suas variáveis de ambiente rápidas
$PS1
,$PS2
e assim por diante. Como essas coisas não costumam ser portáveis entre as conchas, aqui estão alguns links para possíveis candidatos:bash
possui um manual extenso , com páginas sobre variáveis bash (incluindoPS1
, etc.) e Printing a Prompt (que descrevePROMPT_COMMAND
o nome longo paraPS1
). Adicione a seguinte linha ao seu~/.bashrc
tcsh
possui um manual on - line (apenas sua página de manual ), com uma seção sobre variáveis de ambiente de prompt . Adicione a seguinte linha ao seu~/.tcshrc
zsh
possui um guia do usuário , com um guia simples de prompts e um manual , com uma referência muito detalhada sobre expansão de prompt . Adicione a seguinte linha ao seu~/.zshrc
fonte
Bash não é a única concha.
Seu problema pode ser uma simples questão de não ter um .profile ou .bashrc que defina o PS1, ou pode ser que o seu shell de logon não seja de todo.
O Bash usa
gnu readline
para coisas como conclusão de guias. Este é um assunto complicado e a linha de leitura ainda tem seu próprio arquivo de configuração por usuário.Ver
man bash
,man sh
eman 3 readline
. Bash responde--version
. Em muitos sistemas linux,/bin/sh
não é realmente bash, mas geralmente uma versão aleijada doash
.fonte
dash
vez deash
? eu pensei que eu li algo assimEu acho que você não está usando o bash, mas sh e seu prompt não está definido corretamente (se isso é possível com sh).
você pode obter seu shell atual digitando:
echo $SHELL
se você deseja iniciar o bash, basta digitar
bash
fonte
sh
. O eco$SHELL
imprimirá uma variável de ambiente chamadaSHELL
. Essa variável de ambiente simplesmente aponta para o shell e é definida apenas pelo bash. É praticamente inútil determinar qual shell está sendo executado, pois apenas indica, fracamente, que algum pai do processo atual pode ter sido danificado./bin/sh
sim. Mas não conheço nenhuma concha cujo nome sejash
. Eu posso pensar deash
,ksh
,csh
,bash
,zsh
, etcsh
. O primeiro é o usual / bin / sh no linux e no NetBSD, o último é o shell FreeBSD usual, e os outros são shells opcionais. Muitos ambientes de desktop alteram o shell de login do usuário para bash, deixando / bin / sh como ash.sh
é o shell Bourne. pt.wikipedia.org/wiki/Bourne_shell Alguns sistemas (Solaris) ainda vêm com uma versão do shell Bourne que não é apenas uma cópia de uma das reimplementações (ash, dash, bash, ksh, zsh).Você precisa definir uma variável chamada PS1 em um dos seus scripts de login, por exemplo / etc / profile ou ~ / .bashrc. Depende da sua distribuição.
Exemplo: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
fonte