ejecutar un script en cualquier sitio de mi ordenador

Imagen de mere
0 puntos

Hola a todos, lo primero soy principiante en esto de linux pero cada vez me encanta mas.

Tengo un pequeño problema, he encontrado un pequeño script que me sirve para comprimir archivos de fotos que son muy grandes de tamaño y pasarlo a la mitad.

He creado una carpeta y he metido los ficheros que quiero disminuir de tamaño pero he utilizado el siguinete script y si me funciona a la perfeccion dentro de la carpeta donde esta copiado dicho script pero lo que quiero en realidad es crearme una carpte en /home/mi_usuario y asi poder jecuatrlo desdedonde sea pero mi problema es que aunque haya tocado con gedit el /etc/environment para cambiar el PATH y aunque este en la rutano se ejecuta dicho script.

 

Este es el script en cuenstion:

#! /bin/bash

for i in *.JPG; do
convert -quality 50 $i com$i;
done

Me dice el sistema al ejecutarlo: sh: Can't open minifoto.sh

 

¿me podeis ayudar???.

 

Seguro que sera un tonteria pero no soy capaz a menos que copie dicho script dentro de esa carpeta.

 

Muchas gracias a todos

Saludos,

 

Imagen de joseluis
+1
0
-1

No está permitido abusar de las mayúsculas. Por favor revisa las normas.

Si quieres modificar el título ajustando las mayúsculas que deban aparecer hazlo, mientras tanto te lo cambio con tr

Te lo muevo también pues la temática de tu pregunta encaja mejor en La línea de comandos (foro anterior: Ayuda para principiantes)


+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de mere
+1
0
-1

Gracias y disculpas.

Saludos a todos 

+1
0
-1

Quiero aprender y me cuesta trabajo. AYUDA

Imagen de Gabriel_M
+1
0
-1

Hola Mere:

Tomando en cuenta que la estructura de sistema de archivos tipico de Linux en general y Ubuntu en particular es como la del ejemplo:

/ Directorio Raiz

|- bin Binarios (programas ejecutables) esenciales

|- boot Informacion de booteo (arranque)

|- dev Dispositivos

|- etc Archivos de Configuracion

|- home Directorios 'home' de los usuarios

| |- usuario1

| |- usuario2

| |- usuario3

|

|- lib Librerias de Sistema

|- lost+found Archivos recuperados luego de comprobaciones del

| sistema de archivos

|- mnt Punto de montaje para dispositivos removibles y otras

| |- cdrom unidades (una alternativa comunmente usada es /cdrom

| |- floppy y /floppy)

| |- zip

| |- usb

|- media Punto de montaje para dispositivos removibles y otras

| |- cdrom unidades (una alternativa comunmente usada es /cdrom

| |- floppy y /floppy)

| |- zip

| |- usb

|

|- opt Directorio especial de aplicaciones opcionales

|- proc Directorio especial de contenidos virtuales con

| informacion sobre procesos, dispositivos, etc.

|- root Directorio home para el usuario root (Administrador)

|- sbin Binarios administrativos esenciales

|- tmp Espacio de trabajo temporal

|- usr Programas opcionales

| |- X11R6 Archivos de X Window

| | |- bin Binarios

| | |- include Headers

| | |- lib Librerias

| | |- man Manuales

| | |- share Archivos comunes compartidos

| |

| |- bin Binarios

| |- dict Diccionario (no muy comun)

| |- doc Documentacion

| | |- HOWTO Documentos guias sobre COMO realizar tareas especificas

| |

| |- etc Archivos de configuracion adicionales

| |- include Headers para el preprocesador de C (includes)

| |- info Archivos GNU info (paginas de informacion)

| |- lib Librerias adicionales

| |- local Archivos locales generalmente no soportados por la

| | | distribucion, instalados por el administrador

| | |- bin

| | |- doc

| | |- etc

| | |- include

| | |- lib

| | |- man

| | |- sbin

| | |- share

| |

| |- man Paginas de MANuales

| |- share Archivos comunes compartidos

| |- sbin Binarios administrativos adicionales

| |- src Directorios de codigos fuente (ej. /usr/src/linux/)

|

|- var Archivos administrativos (tales como logs del sistema)

| y datos que cambian frecuentemente (como casillas de

| correo y news, colas de impresion, etc.)

|- lock Archivos 'lock', para protejer y bloquear el acceso a

| procesos y dispositivos de manera exclusiva

|- log Archivos log

|- spool Archivos spool

|- mail Casillas de correo de los usuarios

Tendrías que copiar tu script en /usr/bin

Y darle los permisos de ejecución que consideres adecuados. 

 Saludos y suerte.

Ubuntu: sistema operativo superior, moderno, optimizado, seguro, racional, completo, y evolutivo.

Gabriel

+1
0
-1
Imagen de joseluis
+1
0
-1

Imagino que ya lo habrás hecho pero ¿tiene permisos de ejecución el script?

Como supongo que la respuesta será sí, en lugar de modificar el PATH en /etc/environment prueba a hacerlo en /etc/bash.bashrc al final de ese fichero. Por ejemplo si el directorio que quieres poner es /opt/bin sería añadir la línea:

PATH=/opt/bin:"${PATH}"

De todas formas si el directorio es de tu usuario tal vez no sea conveniente que modifiques el PATH para todos los usuarios, quizás lo mejor es que cambies el fichero .bashrc que se encuentra en tu propio directorio. Así si lo que quieres es añadir al path el directorio bin que cuelga de tu carpeta personal yo lo que haría, en lugar de modificar los archivos de /etc, es añadir al final de ~/.bashrc lo siguiente:

PATH=~/bin:"${PATH}"

  • La guia Ubuntu - solución a muchos problemas
  • Google y el buscador de ubuntu-es son tus amigos

Fdo. El forense asesino alias Censor fundamentalista.

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de mere
+1
0
-1

Sigue sin funcionar el script.

He modificado  ~/.bashrc y he copiado asi la instruccionque me disteis antes pero cambiando la carpeta:

PATH=~/bin:"${PATH}"

 Si miro el path me sale ahora:

 

 mario@nuestro-ordenador:~$ echo $PATH
/home/mario/scripts:/home/mario/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-1.5.0-sun/bin
 Pero la ejecutar el script dentro de una carpeta me sale el siguiente error:

mario@nuestro-ordenador:~/minifoto$ sh minifoto.sh
sh: Can't open minifoto.sh

Seguro que sera un tonteria pero no se que hacer ya. 

 Muchas gracias por vuestras respuestas.

Ahhh, esto es lo que me sale en el script cundo le hago un ls -l

mario@nuestro-ordenador:~/scripts$ ls -l
total 4
-rwxrwxrwx 1 mario mario 69 2007-09-22 14:14 minifoto.sh

Saludos a todos,

 

+1
0
-1

Quiero aprender y me cuesta trabajo. AYUDA

Imagen de joseluis
+1
0
-1

Ejecutalo sin el sh, es decir:

minifoto.sh

Tu script ya tiene en la primera línea la instrucción que le indica con qué intérprete tiene que ejecutarlo (en tu caso #!/bin/bash), por cierto entre #! y /bin/bash no dejes ningún espacio.


  • La guia Ubuntu - solución a muchos problemas
  • Google y el buscador de ubuntu-es son tus amigos

Fdo. El forense asesino alias Censor fundamentalista.

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de mere
+1
0
-1

Gracias por responder y efectivamente es sin sh.
¿Pero al utilizar el sh que estaba haciendo mal?.

Muchas gracias por responder.

Saludos,

+1
0
-1

Quiero aprender y me cuesta trabajo. AYUDA

Imagen de joseluis
+1
0
-1

Al usar sh lo que hace es crearte otra shell y desde ahí lanzar el script. Lo que no se es en ese caso de donde saca las variables de entorno (como el PATH) ya que parece que no las hereda de la shell desde donde lanzas el sh minifoto.sh.

Tal vez exportando el PATH antes de lanzarlo con sh (o poniendo el export en el archivo que defines el PATH) funcione con el sh pero no estoy muy seguro:

 export PATH
 sh minifoto.sh

En cualquier caso el sh no es necesario para los scripts que tienen en la primera línea lo del #!/bin/bash (o ksh o el sh que sea).


  • La guia Ubuntu - solución a muchos problemas
  • Google y el buscador de ubuntu-es son tus amigos

Fdo. El forense asesino alias Censor fundamentalista.

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado