¿Por qué mi mensaje de Linux muestra un $, en lugar del nombre de usuario y la ruta?

13

En uno de mis servidores, el mensaje es [usuario @ ruta de host] ... y en realidad puedo presionar "tab" para completar automáticamente la ruta.

Pero en mi nuevo servidor Ubuntu, ¿es solo un signo de dólar?

Alex
fuente
1
Siempre puede escribir pwdpara imprimir el nombre del directorio de trabajo actual. ¿Y estás diciendo que la finalización de tabulación tampoco funciona? (En algunas máquinas que uso, recibo ese breve mensaje solo si inicio sesión como root, y felizmente lo dejo en su lugar como una buena advertencia. Como rara vez, si alguna vez, necesita iniciar sesión como root: no está utilizando root , ¿y tú?)
Arjan
Alex, ¿puedes decirnos qué distribución estás usando?
invertir
Estoy usando Ubuntu
Alex
¿El último Ubuntu? ¿Y estás diciendo que la finalización de tabulación tampoco funciona?
Arjan
Parece que está haciendo dos preguntas: ¿por qué la pestaña no llena automáticamente la ruta y por qué el mensaje es solo un signo de dólar en lugar de [ruta de usuario @ host]. Es un poco difícil votar por las respuestas ya que ninguna responde a ambas.
Joseph Holsten

Respuestas:

27

Como estás haciendo dos preguntas, responderé ambas.

¿Por qué no tabula las rutas de archivo de autocompletar?

Debido a que su shell no lo admite o la finalización de la pestaña no está activada.

Para resolver esto, primero debe descubrir cuál es su shell. En la máquina cuyo shell disfrutas, corre

echo $SHELL

Puede ver lo común /bin/bash, o algo menos común /bin/tcsh, /bin/zsho algo completamente diferente.

Ahora, puede cambiar su shell en la máquina Ubuntu. En esa máquina, primero asegúrese de que existe el shell que desea. Dado que el shell puede no estar en la misma ubicación en la máquina Ubuntu que en la otra, verifique la ubicación escribiendo

 which bash

Esto le dará el camino de la cáscara que desee, algo así como /bin/bash, /usr/bin/basho /usr/local/bin/bash. Por supuesto, si quieres una cáscara distintos de fiesta, que va a decir which tcsh, which zsho similar.

Si no ve una ruta, pero en su lugar ve bash not found, deberá instalar el paquete apropiado y volver a utilizarlo whichpara averiguar dónde se instaló el shell.

Con el camino de su shell elegido, finalmente puede cambiar su shell ejecutando

chsh -s /bin/bash

reemplazando /bin/bashcon cualquiera que sea el camino apropiado para su caparazón de elección.

¿Por qué el indicador es un signo de dólar en lugar de [ruta de usuario @ host]?

Debido a las variables de entorno rápidas $PS1, $PS2y así sucesivamente. Estas cosas no tienden a ser portátiles entre los shells, así que aquí hay algunos enlaces para posibles candidatos:

bashtiene un extenso manual , con páginas sobre Variables Bash (incluyendo PS1, & c) e Imprimiendo un Aviso (que describe PROMPT_COMMAND, el nombre largo para PS1). Agregue la siguiente línea a su~/.bashrc

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

tcshtiene un manual en línea (solo su página de manual), con una sección sobre las variables de entorno de solicitud . Agregue la siguiente línea a su~/.tcshrc

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

zshtiene una guía del usuario , con una guía simple de avisos , así como un manual , con una referencia muy detallada sobre Expansión de avisos . Agregue la siguiente línea a su~/.zshrc

export PS1='[%n@%m %~] '
Joseph Holsten
fuente
6

Bash no es el único caparazón.

Su problema podría ser una simple cuestión de no tener un .profile o .bashrc que establezca PS1, o podría ser que su shell de inicio de sesión no sea bash en absoluto.

Bash se usa gnu readlinepara cosas como completar pestañas. Este es un tema complicado y readline incluso tiene su propio archivo de configuración por usuario.

Ver man bash, man shy man 3 readline. Bash responde --version. En muchos sistemas Linux, en /bin/shrealidad no es bash, pero generalmente es una versión paralizada de ash.

DigitalRoss
fuente
1
no en dashlugar de ash? pensé que había leído algo como esto
knittl
2
+1 por no tener un .profile o .bashrc, a menos que Alex haya configurado inicialmente su cuenta cuando instaló Ubuntu, luego, de forma predeterminada, los nuevos usuarios no tienen un .bashrc / no tienen PS1 configurado.
Cory Plastek
4

Supongo que no estás usando bash, pero sh y tu prompt no está configurado correctamente (si esto es posible con sh).

puede obtener su shell actual escribiendo: echo $SHELL

si quieres comenzar bash, solo escribe bash

knittl
fuente
Puede configurar la solicitud con otros shells. No se llama shell sh. Echoing $SHELLimprimirá una variable de entorno llamada SHELL. Esta variable de entorno simplemente apunta al shell, y solo se establece mediante bash. Es aproximadamente inútil determinar qué shell se está ejecutando, ya que solo indica, débilmente, que algún padre del proceso actual puede haber sido bash.
DigitalRoss
bueno, el nombre del programa de shell es sh (in / bin / sh). y sí, echo $ SHELL imprimirá la variable SHELL que generalmente se establece.
knittl
Todos los sistemas unix tienen un ejecutable llamado /bin/shsí. Pero no conozco ningún shell cuyo nombre sea sh. No puedo pensar en ash, ksh, csh, bash, zsh, y tcsh. El primero es el habitual / bin / sh en Linux y NetBSD, el último es el habitual shell de FreeBSD y los otros son shells opcionales. Muchos entornos de escritorio cambian el shell de inicio de sesión de los usuarios a bash mientras dejan / bin / sh como ceniza.
DigitalRoss
2
@DigitalRoss shes el shell Bourne. es.wikipedia.org/wiki/Bourne_shell Algunos sistemas (Solaris) todavía vienen con una versión de Bourne Shell que no es solo una copia de una de las implementaciones (ash, dash, bash, ksh, zsh).
Chris Johnsen
... y bash se conoce como "Bourne nuevamente shell", que heredó algunas características de Bourne shell, csh y ksh.
invertir