{"id":123,"date":"2023-08-31T08:33:33","date_gmt":"2023-08-31T06:33:33","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=123"},"modified":"2025-04-23T20:42:31","modified_gmt":"2025-04-23T18:42:31","slug":"1-7-4-localizando-comandos","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/1-7-4-localizando-comandos\/","title":{"rendered":"1.7.4. Localizando comandos"},"content":{"rendered":"<p>Ahora que hab\u00e9is escrito algunos comandos, puede que os pregunt\u00e9is d\u00f3nde est\u00e1n ubicados esos comandos y c\u00f3mo el <em>shell<\/em> encuentra los comandos que hab\u00e9is escrito. Para encontrar los comandos que escrib\u00eds, el <em>shell<\/em> busca en lo que se conoce como <em>path<\/em> (en castellano, <em>ruta<\/em>). Para los comandos que no est\u00e1n en vuestro <em>path<\/em>, pod\u00e9is escribir la identidad completa de la ubicaci\u00f3n del comando.<\/p>\n<p>Si conoc\u00e9is el directorio que contiene el comando que deseas ejecutar, una forma de ejecutarlo es escribiendo la ruta completa, o absoluta, de ese comando. Por ejemplo, pod\u00e9is ejecutar el comando <code>date<\/code> que se encuentra dentro del directorio \/bin escribiendo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ \/bin\/date<\/pre>\n<p>Por supuesto, esto puede ser inconveniente, especialmente si el comando reside en un directorio con una ruta larga. La mejor manera es tener los comandos almacenados en directorios conocidos y luego agregar esos directorios a la variable de entorno PATH de tu <em>shell<\/em>. El <em>path<\/em> consiste en una lista de directorios que se verifican secuencialmente para los comandos que hab\u00e9is escrito. Para ver vuestro <em>path<\/em> actual, escribid lo siguiente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo $PATH<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">\/home\/student\/bin:\/home\/student\/.local\/bin:\/usr\/local\/sbin:\r\n\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:<\/pre>\n<p>Los resultados muestran un <em>path <\/em>predeterminado com\u00fan para un usuario regular de Gnu\/Linux. Los directorios en la lista del <em>path<\/em> est\u00e1n separados por dos puntos. La mayor\u00eda de los comandos de usuario que vienen con Gnu\/Linux se almacenan en los directorios \/bin, \/usr\/bin o \/usr\/local\/bin. Los directorios \/sbin y \/usr\/sbin contienen comandos administrativos (algunos sistemas Gnu\/Linux no colocan esos directorios en los <em>paths<\/em> de los usuarios regulares). El primer directorio mostrado es el directorio <em>bin<\/em> en el directorio de inicio del usuario (\/home\/student\/bin). Si dese\u00e1is agregar vuestros propios comandos o <em>scripts<\/em> de <em>shell<\/em>, colocadlos en el directorio <em>bin<\/em> en vuestro directorio de inicio (ie. \/home\/student\/bin para un usuario llamado <em>student<\/em>). Este directorio se agrega autom\u00e1ticamente a vuestro <em>path<\/em> en algunos sistemas Gnu\/Linux, aunque es posible que necesit\u00e9is crear ese directorio o agregarlo a vuestro PATH en otros sistemas Gnu\/Linux. Entonces, siempre que agregu\u00e9is el comando a vuestro <em>bin<\/em> con permiso de ejecuci\u00f3n, pod\u00e9is comenzar a usarlo simplemente escribiendo el nombre del comando en el indicador de vuestro <em>shell<\/em>. Si se considera que el nuevo comando est\u00e9 disponible para todos los usuarios, pod\u00e9is agregarlo con el usuario <em>root<\/em>\u00a0al directorio \/usr\/local\/bin o \/opt\/nombre_paquete\/bin.<\/p>\n<p>A diferencia de algunos otros sistemas operativos, Gnu\/Linux no verifica el directorio actual del ejecutable. Inmediatamente, comienza a buscar en el <em>path<\/em>, y los ejecutables en el directorio actual solo se ejecutan si est\u00e1n en la variable PATH o si dais su direcci\u00f3n absoluta (como \/home\/student\/scriptx.sh) o relativa (por ejemplo, y fijaos en el punto antes de la contrabarra, .\/scriptx.sh). Los directorios que pertenecen al <em>path <\/em>de ejecutables se pueden averiguar escribiendo $PATH en el <em>prompt<\/em> del terminal:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ echo $PATH<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">\/home\/student\/.sdkman\/candidates\/java\/current\/bin:\r\n\/home\/student\/miniconda3\/bin:\r\n\/home\/student\/miniconda3\/condabin:\r\n\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\r\n\/bin:\/usr\/games:\/usr\/local\/games:\/snap\/bin<\/pre>\n<p>El orden del directorio del <em>path<\/em> es importante. Los directorios se verifican de izquierda a derecha. Entonces, en este ejemplo, si hay un comando llamado <code>foo<\/code> ubicado en ambos directorios \/bin y \/usr\/bin, se ejecuta el que est\u00e1 en <code>\/bin<\/code>. Para que se ejecute el otro comando <em>foo<\/em>, deb\u00e9is escribir el <em>path<\/em> completa del comando o cambiar vuestra variable PATH (un ejemplo pr\u00e1ctico de c\u00f3mo cambiar la variable PATH y agregar directorios se describe en los apartados 1.15 y 1.17).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ahora que hab\u00e9is escrito algunos comandos, puede que os pregunt\u00e9is d\u00f3nde est\u00e1n ubicados esos comandos y c\u00f3mo el shell encuentra los comandos que hab\u00e9is escrito. Para encontrar los comandos que escrib\u00eds, el shell busca en lo que se conoce como path (en castellano, ruta). Para los comandos que no est\u00e1n en vuestro path, pod\u00e9is escribir [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/123"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":12,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/123\/revisions"}],"predecessor-version":[{"id":1344,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/123\/revisions\/1344"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/media?parent=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}