Tengo un alias para un comando (estoy configurando un entorno de desarrollo de Python)
alias python=~/virtualenv/bin/python
para que pueda correr ~/virtualenv/bin/pythonsimplemente escribiendo python. Ahora en mi proyecto hay un script de shell que va, por ejemplo:
#!/bin/sh
python run-project.py
¿Puedo hacer que el script use mi alias en pythonlugar del que pythonse encuentra $PATH, sin realizar cambios en el script?
shell-script
alias
phunehehe
fuente
fuente

#!/usr/bin/env pythonen la parte superior de sus scripts de Python parece más fácil.Respuestas:
Si.
Si pones tus alias
~/.aliases, entonces puedes hacerEsto supone que su script comienza con
#!/bin/bash, porque#!/bin/shes un poco menos predecible.Esto es lo que sugeriría:
[ -f ~/.bashenv ] && source ~/.bashenvBASH_ENV=~/.bashenven / etc / environment#!/bin/bashsi aún no lo hacenO, si estás usando zsh, simplemente mueve tus alias a ~ / .zshenv. zsh busca en ese archivo automáticamente.
Pero tal vez sea más fácil colocarlo
~/virtualenv/bincerca del frente de suPATH, luego cambiar sus scripts de Python para tener#!/usr/bin/env pythoncomo primera línea.fuente
~/.bashenven el paso 4?#!/bin/shde#!/bin/bash? ¿Puedo simplemente hacerbash my-script?bash my-scriptque funcionará si sigues haciendo los pasos 1-4.sudou otro método de elevación de privilegios. Y no se le permite cambiar lavirtualenvejecución por, lo que sería el principal punto de no tener~/virtualenv/binen suPATHforma permanente. Agregar el directorio frente aPATHcuando sea necesario es el mejor método.Supongamos que su archivo de alias es " ~ / .bash_aliases ", ponga esto en su script:
( vía )
fuente
Alternativamente, siempre
sourcepuedes usar tu script para usar los alias de manera forzada. Por ejemplo, supongamos que tiene un alias dermen su~/.bashrc:mientras
moveToTrashes un programa en tu/usr/bin. Ahora tiene un script llamadotest.bashasí:Cuando
test.bashse ejecuta directamente, puede ver la salida/bin/rm, mientrassource test.bashque obtendrá la salidafuente