Eu tenho um alias para um comando (estou configurando um ambiente de desenvolvimento Python)
alias python=~/virtualenv/bin/python
para que eu possa correr ~/virtualenv/bin/python
apenas digitando python
. Agora, no meu projeto, há um script de shell que diz, por exemplo:
#!/bin/sh
python run-project.py
Posso fazer com que o script use meu alias em python
vez do que python
ele encontra $PATH
, sem fazer alterações no script?
shell-script
alias
phunehehe
fonte
fonte
#!/usr/bin/env python
no topo de seus scripts python parece mais fácil.Respostas:
Sim.
Se você colocar seus aliases
~/.aliases
, poderá fazerIsso pressupõe que seu script comece com
#!/bin/bash
, porque#!/bin/sh
é um pouco menos previsível.Aqui está o que eu sugeriria:
[ -f ~/.bashenv ] && source ~/.bashenv
BASH_ENV=~/.bashenv
em / etc / environment#!/bin/bash
se eles ainda não o fizeremOu, se você estiver usando zsh, apenas mova seus aliases para ~ / .zshenv. O zsh procura nesse arquivo automaticamente.
Mas talvez seja mais fácil colocar apenas
~/virtualenv/bin
na frente do seuPATH
e alterar seus scripts Python para ter#!/usr/bin/env python
a primeira linha.fonte
~/.bashenv
na etapa 4?#!/bin/sh
para#!/bin/bash
? Posso apenas fazerbash my-script
?bash my-script
que funcionará se você ainda executar as etapas 1 a 4.sudo
outro método de elevação de privilégios. E ele não permite que você altere avirtualenv
execução por, o que seria o principal ponto de não ter~/virtualenv/bin
em suaPATH
forma permanente. Adicionar o diretório na frente doPATH
quando necessário é o melhor método.Supondo que seu arquivo de alias seja " ~ / .bash_aliases ", coloque isso em seu script:
( via )
fonte
Como alternativa, você sempre pode
source
usar seu script para usar forçosamente os aliases. Por exemplo, vamos supor que você tenha um aliasrm
no seu~/.bashrc
:Enquanto
moveToTrash
é um programa no seu/usr/bin
. Agora você tem um script chamadotest.bash
assim:Quando
test.bash
é executado diretamente, você pode ver a saída/bin/rm
, enquantosource test.bash
obterá a saídafonte