Allí «No es necesario hacer eso, ya está en una variable:
$ echo $PWD /home/terdon
El PWD
La variable está definida por POSIX y funcionará en todos los shells compatibles con POSIX:
PWD
Establecido por el shell y por la utilidad cd. En el shell, el valor se inicializará desde el entorno de la siguiente manera. Si se pasa un valor para PWD al shell en el entorno cuando se ejecuta, el valor es un nombre de ruta absoluto del directorio de trabajo actual que no tiene más de {PATH_MAX} bytes, incluido el byte nulo de terminación, y el valor no contiene cualquier componente que sea punto o punto-punto, el shell establecerá PWD en el valor del entorno. De lo contrario, si se pasa un valor para PWD al shell en el entorno cuando se ejecuta, el valor es un nombre de ruta absoluto del directorio de trabajo actual y el valor no contiene ningún componente que sea punto o punto-punto, entonces no se especifica si el shell establece PWD en el valor del entorno o establece PWD en el nombre de ruta que generaría pwd -P. De lo contrario, la utilidad sh establece PWD en el nombre de ruta que generaría pwd -P. En los casos en los que PWD se establece en el valor del entorno, el valor puede contener componentes que hacen referencia a archivos de tipo enlace simbólico. En los casos en que PWD se establece en el nombre de ruta que generaría pwd -P, si no hay permiso suficiente en el directorio de trabajo actual, o en cualquier padre de ese directorio, para determinar cuál sería el nombre de ruta, el valor de PWD es sin especificar. Las asignaciones a esta variable pueden ignorarse. Si una aplicación establece o desarma el valor de PWD, los comportamientos de las utilidades cd y pwd no se especifican.
Para una respuesta más general, la forma de guardar la salida de un comando en una variable es encerrar el comando en $()
o ` `
(comillas inversas):
var=$(command)
o
var=`command`
De los dos, el $()
ya que es más fácil crear comandos complejos como command0 $(command1 $(command2 $(command3)))
.
dir=$(pwd)
Este es más portátil y preferido sobre el método de comillas invertidas.
El uso de $()
le permite anidar los comandos
por ejemplo: mech_pwd=$(pwd; echo in $(hostname))
Comentarios
Debe utilizar la sustitución de comandos para guardar la salida del comando pwd
en una variable. La sustitución de comandos puede usar comillas inversas o caracteres de dólar. Así:
$ mkdir "/tmp/new dir" $ cd "/tmp/new dir" $ CWD="$(pwd)" $ echo $CWD /tmp/new dir $ cd ~ $ echo $CWD /tmp/new dir $ pwd /home/ja
El valor del directorio de trabajo actual puede sé diferente. Si usó enlaces simbólicos para obtener el directorio actual, pwd dará resultados diferentes a / usr / bin / pwd. Como está utilizando bash, usaría:
dir=$(/usr/bin/pwd)
o según el comentario:
dir=$(pwd -P)
ya que no me gustan las comillas inversas porque no pueden anidar.
Comentarios