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ú?)
¿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
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.
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
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
2
Debe establecer una variable llamada PS1 en uno de sus scripts de inicio de sesión, por ejemplo / etc / profile o ~ / .bashrc. Dependerá de su distribución.
pwd
para 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ú?)Respuestas:
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
Puede ver lo común
/bin/bash
, o algo menos común/bin/tcsh
,/bin/zsh
o 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
Esto le dará el camino de la cáscara que desee, algo así como
/bin/bash
,/usr/bin/bash
o/usr/local/bin/bash
. Por supuesto, si quieres una cáscara distintos de fiesta, que va a decirwhich tcsh
,which zsh
o similar.Si no ve una ruta, pero en su lugar ve
bash not found
, deberá instalar el paquete apropiado y volver a utilizarlowhich
para averiguar dónde se instaló el shell.Con el camino de su shell elegido, finalmente puede cambiar su shell ejecutando
reemplazando
/bin/bash
con 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
,$PS2
y así sucesivamente. Estas cosas no tienden a ser portátiles entre los shells, así que aquí hay algunos enlaces para posibles candidatos:bash
tiene un extenso manual , con páginas sobre Variables Bash (incluyendoPS1
, & c) e Imprimiendo un Aviso (que describePROMPT_COMMAND
, el nombre largo paraPS1
). Agregue la siguiente línea a su~/.bashrc
tcsh
tiene 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
zsh
tiene 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
fuente
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 readline
para 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 sh
yman 3 readline
. Bash responde--version
. En muchos sistemas Linux, en/bin/sh
realidad no es bash, pero generalmente es una versión paralizada deash
.fuente
dash
lugar deash
? pensé que había leído algo como estoSupongo 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
fuente
sh
. Echoing$SHELL
imprimirá una variable de entorno llamadaSHELL
. 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./bin/sh
sí. Pero no conozco ningún shell cuyo nombre seash
. No puedo pensar enash
,ksh
,csh
,bash
,zsh
, ytcsh
. 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.sh
es 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).Debe establecer una variable llamada PS1 en uno de sus scripts de inicio de sesión, por ejemplo / etc / profile o ~ / .bashrc. Dependerá de su distribución.
Ejemplo: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
fuente