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/python
simplemente 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 python
lugar del que python
se encuentra $PATH
, sin realizar cambios en el script?
shell-script
alias
phunehehe
fuente
fuente
#!/usr/bin/env python
en 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/sh
es un poco menos predecible.Esto es lo que sugeriría:
[ -f ~/.bashenv ] && source ~/.bashenv
BASH_ENV=~/.bashenv
en / etc / environment#!/bin/bash
si 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/bin
cerca del frente de suPATH
, luego cambiar sus scripts de Python para tener#!/usr/bin/env python
como primera línea.fuente
~/.bashenv
en el paso 4?#!/bin/sh
de#!/bin/bash
? ¿Puedo simplemente hacerbash my-script
?bash my-script
que funcionará si sigues haciendo los pasos 1-4.sudo
u otro método de elevación de privilegios. Y no se le permite cambiar lavirtualenv
ejecución por, lo que sería el principal punto de no tener~/virtualenv/bin
en suPATH
forma permanente. Agregar el directorio frente aPATH
cuando 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
source
puedes usar tu script para usar los alias de manera forzada. Por ejemplo, supongamos que tiene un alias derm
en su~/.bashrc
:mientras
moveToTrash
es un programa en tu/usr/bin
. Ahora tiene un script llamadotest.bash
así:Cuando
test.bash
se ejecuta directamente, puede ver la salida/bin/rm
, mientrassource test.bash
que obtendrá la salidafuente