¿Qué es $PATH
?
¿Cómo puedo tener comandos / programas que solo están disponibles para mí?
He visto este camino ~/bin
mencionado anteriormente, pero ¿para qué se utiliza y cómo lo uso?
¿Qué es $PATH
?
¿Cómo puedo tener comandos / programas que solo están disponibles para mí?
He visto este camino ~/bin
mencionado anteriormente, pero ¿para qué se utiliza y cómo lo uso?
Respuestas:
$ PATH es una variable de entorno utilizada para buscar comandos. El ~ es su directorio de inicio, por lo que ~ / bin será / home / user / bin; Es un directorio normal.
Cuando ejecuta "ls" en un shell, por ejemplo, realmente ejecuta el programa / bin / ls; la ubicación exacta puede variar según la configuración de su sistema. Esto sucede porque / bin está en su $ PATH.
Para ver la ruta y encontrar dónde se encuentra cualquier comando en particular:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
Para tener su propio directorio bin privado, solo necesita agregarlo a la ruta. Haga esto editando ~ / .profile (un archivo oculto) para incluir las siguientes líneas. Si las líneas están comentadas, solo tiene que descomentarlas; si ya están allí, ¡ya está todo listo!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
Ahora necesita crear su directorio ~ / bin y, dado que .profile se ejecuta al iniciar sesión y solo agrega ~ / bin si existe en ese momento, debe iniciar sesión nuevamente para ver la RUTA actualizada.
Probémoslo:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
type
para ver cómo el shell resolverá un comando real; por ejemplo: which echo
e type echo
informará cosas diferentes, which
devuelve '/ bin / echo' pero 'type' devuelve que es un shell incorporado, que el shell preferirá al archivo en '/ bin'.
which
se reemplaza mejor por type
o command
en shells interactivos, y es completamente inútil en scripts.
$HOME
variable $PATH
por alguna razón no funciona, es decir, uno tiene que usar el ~
signo en su lugar.
En cuanto a los ~/bin
comandos / programas solo disponibles para su usuario
Las versiones recientes de Ubuntu incluyen el ~/bin
directorio en su $PATH
, pero solo si el ~/bin
directorio existe.
Si no existe:
Asegúrese de que su ~/.profile
contiene la siguiente estrofa (el valor predeterminado ~/.profile
ya lo tiene):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Crea el ~/bin
directorio:
mkdir -p ~/bin
Reinicie su computadora u obligue a bash a volver a leer ~/.profile
:
exec -l bash
exec -l bash
consejo "reiniciar ". ¿Qué hace la -l
bandera? No estoy encontrando una explicación en man exec
.
exec -l
ejecutará bash como un shell de inicio de sesión [ wiki.bash-hackers.org/commands/builtin/exec] . En resumen, obliga a bash a volver a leer /etc/profile
y ~/.profile
. Solo ejecutar exec bash
solo volverá a leer ~/.bashrc
.