2009-10-28 21 views
20

me gustaría extraer la ruta actual en una variable y utilizarla más tarde en el guiónConseguir camino actual en la variable y su uso

Algo así como:

myvar = pwd 

Más adelante:

cd myvar 

Pero mis habilidades de bash se han oxidado en los últimos años.

¿cómo iba a seguir hablando de hacer eso?

+1

Además de las respuestas a su pregunta real, puede ejecutar comandos en un directorio diferente, con una sub-shell, como: * * (cd xyz; rm temp. $$) ** – NVRAM

+0

NVRM muy bueno. Después de escribir mi script y pelear con la asignación de varibale, solo intento su solución y deformar mi código con() ¡y simplemente funciona! (He eliminado como un agradecimiento a la línea 7 que) –

Respuesta

43
myvar="$PWD" 
cd "$myvar" 

(. Las comillas son necesarias si su ruta contiene espacios en blanco)

+4

'$ (pwd)' pueden ser más preciso que '$ pwd' (pero a veces pueden dar un camino diferente de lo esperado). – ephemient

+3

y cotizaciones no son necesarios en la asignación a menos que haya un espacio en blanco en el comando * * - por lo tanto, esto funciona bien: ** mivar = $ PWD ** – NVRAM

13

Algo como esto debería funcionar:

myvar=`pwd` 
# ... 
cd $myvar 
+2

Desde que explícitamente le pregunta acerca de fiesta que haría uso de la sintaxis alternativa: '$ (pwd)' ya que es más fácil de leer en mi opinión. –

+2

No hay nada bash-specific sobre '$ (...)'; puede y podría decirse que debería usarse en todas las instancias –

+0

@sgm: no lo sabía. De hecho, parece que POSIX ya define eso, por lo que hay menos razones para usar los viejos backticks. –

4

en bash

$ a=$(pwd) 
+0

Gracias! El "$ pwd" no funcionó para mí, pero esto fue así. –

3

Además Ind al comando pwd y la variable de entorno $PWD, también te sugiero que mires i nto pushd/popd:

 
/$ pushd /usr 
/usr/
/usr$ pushd /var/log 
/var/log /usr/
/var/log$ popd 
/usr/
/usr$ popd 
/
/$ 
+1

Plus, visita nuestra cd ** - ** comando (con un guión/guión), y la variable de auto-** ** $ OLDPWD. – NVRAM

+0

¡No sabía esto! Gracias – R0b0tn1k

0

Se trabajó para mí:

currentdir=$(cd -) 
printf "Generating content at $currentdir\n" 
Cuestiones relacionadas