У меня есть псевдоним для команды (я настраиваю среду разработки Python)
alias python=~/virtualenv/bin/python
так что я могу бежать ~/virtualenv/bin/python
, просто набрав python
. Теперь в моем проекте есть сценарий оболочки, который работает, например:
#!/bin/sh
python run-project.py
Могу ли я заставить скрипт использовать мой псевдоним python
вместо найденного в python
нем $PATH
, без внесения изменений в скрипт?
shell-script
alias
phunehehe
источник
источник
#!/usr/bin/env python
в верхней части ваших сценариев Python кажется проще.Ответы:
Да.
Если вы введете свои псевдонимы
~/.aliases
, то вы можете сделатьЭто предполагает, что ваш скрипт начинается с
#!/bin/bash
, потому что#!/bin/sh
он немного менее предсказуем.Вот что я бы предложил:
[ -f ~/.bashenv ] && source ~/.bashenv
BASH_ENV=~/.bashenv
в / etc / environment#!/bin/bash
если они этого еще не сделалиИли, если вы используете zsh, просто переместите псевдонимы в ~ / .zshenv. Zsh смотрит в этот файл автоматически.
Но, возможно, проще просто поставить
~/virtualenv/bin
перед собойPATH
, а затем изменить свои сценарии Python, чтобы#!/usr/bin/env python
в качестве первой строки.источник
~/.bashenv
на шаге 4?#!/bin/sh
на#!/bin/bash
? Могу я просто сделатьbash my-script
?bash my-script
, сработает, если вы все еще будете выполнять шаги 1-4.sudo
другим или другим методом повышения привилегий. И это не позволяет вам менятьvirtualenv
исполнение, что было бы главной причиной отсутствия~/virtualenv/bin
у вас наPATH
постоянной основе. Добавление каталога передPATH
нужным является лучшим способом.Предположим, что ваш файл псевдонима " ~ / .bash_aliases ", поместите это в ваш скрипт:
( через )
источник
Кроме того, вы всегда можете использовать
source
свой сценарий для принудительного использования псевдонимов. Например, давайте предположим , что у вас есть псевдоним изrm
в вашем~/.bashrc
:в то время
moveToTrash
как программа в вашем/usr/bin
. Теперь у вас есть скрипт с таким именемtest.bash
:Когда
test.bash
выполняется непосредственно, вы можете увидеть вывод/bin/rm
, в то время какsource test.bash
получите выводисточник