Dado que es una variable de entorno (el alias tiene una definición diferente bash
), debe evaluarlo con algo como:
cd "${myFold}"
o:
cp "${myFold}/someFile" /somewhere/else
Pero en realidad me resulta más fácil, si solo desea la facilidad de cambiar a ese directorio, crear un alias real (en uno de los bash
archivos de inicio como .bashrc
), para que pueda ahorrar pulsaciones de teclas:
alias myfold='cd ~/Files/Scripts/Main'
Entonces puedes usar (sin el cd
):
myfold
Para deshacerse de la definición, usa unalias
. La siguiente transcripción muestra todos estos en acción:
pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy
pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy
pax> cd ; pwd
/home/pax
pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy
pax> unalias footy ; footy
bash: footy: command not found
in one of the bash startup files like .bashrc
. Poner el alias en un archivo de inicio adecuado asegurará que esté disponible para todas las sesiones.Hay una opción de shell
cdable_vars
:Podrías agregar esto a tu
.bashrc
:shopt -s cdable_vars export myFold=$HOME/Files/Scripts/Main
Observe que reemplacé la tilde con
$HOME
; las comillas impiden la expansión de tilde y Bash se queja de que no hay un directorio~/Files/Scripts/Main
.Ahora puedes usar esto de la siguiente manera:
cd myFold
No es
$
necesario. Ese es el punto, en realidad, como se muestra en otras respuestas,cd "$myFold"
funciona sin la opción de shell.cd myFold
también funciona si la ruta enmyFold
contiene espacios, no se requieren comillas.Por lo general, esto incluso funciona con el autocompletado de pestañas como la
_cd
función enbash_completion
verifica sicdable_vars
está configurada, pero no todas las implementaciones lo hacen de la misma manera, por lo que es posible que tenga quebash_completion
volver a buscar en su.bashrc
(o editar/etc/profile
para configurar la opción de shell).Otros shells tienen opciones similares, por ejemplo, Zsh (
cdablevars
).fuente
setopt cdablevars
parece que podría serlo, pero no sé nada de zsh.cdable_vars
cd
proporcionada por bash-completamiento, que usa la_cd
función (complete -o nospace -F _cd cd
). Agregar-v
a eso (para completar en variables) funciona, pero puede tener efectos secundarios no deseados; para mí, muestra mi entorno completo cuando finalizo la pestaña.Quizás sea mejor usar enlaces
Enlace suave
Enlace simbólico o suave (archivos o directorios, más flexible y autodocumentado)
# Source Link ln -s /home/jake/doc/test/2000/something /home/jake/xxx
Enlace duro
Enlace fijo (solo archivos, menos flexible y no autodocumentado)
# Source Link ln /home/jake/doc/test/2000/something /home/jake/xxx
Cómo crear un enlace a un directorio
Sugerencia : si no necesita ver el enlace en su casa, puede comenzar con un punto. ; luego estará oculto de forma predeterminada y luego podrá acceder a él como
cd ~/.myHiddelLongDirLink
fuente
Puede agregar las rutas que desee a la tabla hash de su bash:
hash -d <CustomName>=<RealPath>
Ahora podrás hacerlo
cd ~<CustomName>
. Para hacerlo permanente, agréguelo a su script bashrc .Tenga en cuenta que esta tabla hash está destinada a proporcionar un caché para que bash no necesite buscar contenido cada vez que se ejecuta un comando, por lo que esta tabla se borrará en eventos que invaliden el caché, por ejemplo, modificando
$PATH
.fuente
zsh
pero no enbash
.zsh
solo funciona, al menos en mi sistema Ubuntu.En primer lugar, debe eliminar las comillas:
Las comillas evitan que el shell expanda la tilde a su significado especial de ser su
$HOME
directorio.A continuación, podría utilizar
$myFolder
un entornouna variable de shell:bashboy@host:~$ cd $myFolder bashboy@host:~/Files/Scripts/Main$
Para crear un alias , debe definir el alias:
alias myfolder="cd $myFolder"
Luego puede tratar esto como un comando:
fuente
export
..bashrc
archivo de recursos o en cualquier otro que utilice, y se definirá en el shell inmediato, pero no en los scripts de shell.Primero, necesita
$
acceder al valor de "myFold" para que el código de la pregunta funcione:cd "$myFold"
Para simplificar esto, crea un alias en
~/.bashrc
:alias cdmain='cd ~/Files/Scripts/Main'
No olvide obtener
.bashrc
una vez para que el alias esté disponible en la sesión actual de bash:source ~/.bashrc
Ahora puede cambiar a la carpeta usando:
fuente
Otra opción sería utilizar un enlace simbólico. es decir:
Después de eso, puede realizar operaciones para
~/myFold
, como:que pondrá el archivo en formato
~/Files/Scripts/Main
. Puede eliminar el enlace simbólico en cualquier momento conrm ~/myFold
, que mantendrá el directorio original.fuente
cd myFold
asípwd
, mostrará que está en myFold. Esto es un factor decisivo para mí porque los comandos relativos con el control de fuente p4 dependen del directorio actual.pwd -P
pero también es posible un alias real para un directorio, intente
myScripts="~/Files/Scripts/Main" alias myScripts="cd $myScripts"
De esta manera tiene una convención de nomenclatura común (para cada par de directorio / alias), y si necesita copiar algo del directorio actual a myScripts, no tiene que pensar en ello.
IHTH
fuente
Las respuestas anteriores que probé no permiten la expansión automática (autocompletado) de los subdirectorios del directorio con alias.
Sin embargo, si empuja el directorio al que desea asignar un alias en la
dirs
pila ...$ pushd ~/my/aliased/dir
... luego puede escribir
dirs -v
para ver su posición numérica en la pila:y consúltelo usando ese número para la mayoría, si no todos los comandos que esperan un parámetro de directorio:
Incluso puede utilizar Tabpara mostrar los subdirectorios inmediatos del directorio "alias":
$ cd ~0/<Tab> child_dir1 child_dir2
fuente
Pon la siguiente línea en tu myscript
set myFold = '~/Files/Scripts/Main'
En el uso terminal
source myscript cd $myFold
fuente