OSX – Editar la variable de ambiente PATH

Para ver las variables de ambiente utiliza el comando env. Para ver el valor de una variable de ambiente en específico puedes utilizar el comando echo $VARIABLE.

Para modificar el valor de una variable de ambiente, por ejemplo el PATH, necesitas editar el archivo ~/.bash_profile. Para ello puedes utilizar cualquier editor de archivos (vi, vim, nano, pico, TextEdit, TextMate, sublime, etc).

En lo personal, prefiero utilizar un editor simple como TextEdit, para ello puedes ejecutar el siguiente comando en la terminal

open -e ~/.bash_profile

Ten en cuenta que si vas a utilizar las comillas dobles para establecer el valor del PATH, por ejemplo

export PATH="$HOME/Applications/sdk/android/tools:$HOME/Applications/sdk/android/platform-tools:$PATH"

Necesitas modificar las preferencias del teclado para que no sustituya las comillas simples por caracteres no ASCII. Para ello ve a las preferencias del teclado y en la sección «Text» desactiva la opción «use smart quotes and dashes».

Fuentes:
http://stackoverflow.com/questions/7501678/set-environment-variables-on-mac-os-x-lion
http://apple.stackexchange.com/questions/11745/reset-your-path-variable
http://apple.stackexchange.com/questions/120486/quotes-problem-in-mavericks-or-textedit

Java – Ambiente de producción y desarrollo

Lo más común es desarrolllar nuestras aplicaciones en un ambiente de desarrollo, es decir, utilizar servidores de prueba para después implementarlo en un ambiente de produción. Si el código de tu proyecto se encuentra en un sistema de control de código (git, svn, etc.) es díficil, si no tedioso, cambiar entre un ambiente y otro. Tienes que modificar los archivos de configuración para que se conecte a la base de datos de producción cada vez que actualizas el sistema y debes tener cuidado de no incluir en el control de código las conexiones de prueba o visceversa.

Para resolver este problema podemos utilizar JNDI, pero se vuelve complicado el mantener un entorno replicado en nuestra máquina de desarrollador. Eixsten plataformas para desarrollar y ejecutar aplicaciones web de forma escalable -tales como- Heroku, Google App Engine o Microsoft Azure. Para resolver este problema de contextos, Heroku ha optado por utilizar variables de ambiente para cambiar entre el contexto de desarrollo y el de producción.

Esta solución me pareció adecuada y decidí implementarla en un proyecto Java. Realmente es muy sencillo, normalmente creamos una conexión a la base de datos de la siguiente forma:

DriverManager.getConnection(dbUrl, dbUser,dbPassword);

Necesitamos 3 cosas: url a la base de datos, usuario y contraseña.
Opcionalmente podemos incluir el usuario y contraseña en la URL de la base de datos si el controlador lo permite.En el caso de Oracle es de la siguiente manera:

jdbc:oracle:thin:[USER/PASSWORD]@[HOST][:PORT]:SID
jdbc:oracle:thin:[USER/PASSWORD]@//[HOST][:PORT]/SERVICE

Para leer la configuración de las variables de ambiente sería

DriverManager.getConnection(System.getenv(«DATABASE_URL»));

En nuestro caso utilizamos diferentes conexiones de acuerdo al usuario y la base de datos, por lo que seguimos una nomenclatura de la siguiente manera

USUARIO_AT_DATABASE

así por ejemplo, podríamos conectarnos a distintas bases de datos

   DriverManager.getConnection(System.getenv("RH_AT_QUERETARO"));
   DriverManager.getConnection(System.getenv("RH_AT_AMEALCO"));
   DriverManager.getConnection(System.getenv("USRCIVQRO_AT_QUERETARO"));

Por último necesitas configurar estas variables de ambiente en tu sistema operativo.

En Ubuntu lo puedes hacer de diferentes formas.
A mi me funcionó creando un archivo env.sh en la carpeta /etc/profile.d

   #!/usr/bin/bash
   export RH_AT_CENTRO_DE_JUSTICIA=jdbc:oracle:thin:rh/secret@127.0.0.1:1521:dbtest
   export COMPRAS_AT_AMEALCO=jdbc:oracle:thin:compras/secret@127.0.0.1:1521:dbtest

Fuentes:
https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-java
http://stackoverflow.com/questions/5547224/username-password-in-jdbc-connection-url
https://help.ubuntu.com/community/EnvironmentVariables
http://askubuntu.com/questions/307023/command-not-working-in-profile

Ubuntu 11.10 – Establecer variables de ambiente

No puedo creer que algo tan simple -o tal vez no- como establecer variables de ambiente sea tan complicado en Ubuntu. Antes, cuando querías agregar una variable simplemente agregabas una línea como la siguiente en el archivo ~/.bash_profile
export M2_HOME=/home/cirovladimir/Apps/maven/apache-maven-3.0.3
Incluso podías, sin tener que reiniciar, actualizar las variables ejecutando dicho archivo (sh ~/.bash_profile).
Pues en Ubuntu 11.10 esto ya no funciona, lo he intentado sin éxito.
Por el momento la única forma que he encontrado es agregarlas en el archivo /etc/environment. Por supuesto, y lo que me molestó, es que necesitas privilegios de Administrador -sudo- además de que no puedes especificar el valor de las variables en base a otras, es decir, PATH=$PATH:$M2 no esta permitido (si no me crees, intentalo, pero una vez que reinicié ya no entró en la sesión gráfica :X). Por lo que deberás definir las variables de forma explícita. Por cierto, para que los cambios surtan efecto debes reiniciar tu sesión.
Por ejemplo:

PATH=»/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/cirovladimir/Apps/maven/apache-maven-3.0.3/bin»
M2_HOME=/home/cirovladimir/Apps/maven/apache-maven-3.0.3
M2=/home/cirovladimir/Apps/maven/apache-maven-3.0.3/bin

en vez de

M2_HOME=/home/cirovladimir/Apps/maven/apache-maven-3.0.3
M2=$M2_HOME/bin
PATH=»/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$M2″

Fuentes:
https://help.ubuntu.com/community/EnvironmentVariables
http://wobblycogs.co.uk/index.php/computing/linux/55-installing-maven-on-ubuntu-1110