Ich habe einen Alias für einen Befehl (ich richte eine Python-Entwicklungsumgebung ein).
alias python=~/virtualenv/bin/python
damit ich ~/virtualenv/bin/python
einfach durch tippen rennen kann python
. Jetzt gibt es in meinem Projekt ein Shell-Skript, das zum Beispiel lautet:
#!/bin/sh
python run-project.py
Kann ich das Skript dazu bringen, mein Alias python
anstelle des python
darin gefundenen zu verwenden $PATH
, ohne Änderungen am Skript vorzunehmen?
shell-script
alias
Phunehehe
quelle
quelle
#!/usr/bin/env python
an die Spitze Ihrer Python-Skripte scheint einfacher zu sein.Antworten:
Ja.
Wenn Sie Ihre Aliase eingeben
~/.aliases
, können Sie dies tunDies setzt voraus, dass Ihr Skript mit beginnt
#!/bin/bash
, da#!/bin/sh
es etwas weniger vorhersehbar ist.Folgendes würde ich vorschlagen:
[ -f ~/.bashenv ] && source ~/.bashenv
BASH_ENV=~/.bashenv
/ etc / environment ein#!/bin/bash
falls dies noch nicht geschehen istWenn Sie zsh verwenden, verschieben Sie Ihre Aliase einfach in ~ / .zshenv. zsh sucht automatisch in dieser Datei.
Aber vielleicht ist es einfacher, einfach in die
~/virtualenv/bin
Nähe Ihrer Vorderseite zu setzenPATH
und dann Ihre Python-Skripte so zu ändern, dass sie#!/usr/bin/env python
als erste Zeile dienen.quelle
~/.bashenv
in Schritt 4?#!/bin/sh
bis#!/bin/bash
? Kann ich nurbash my-script
?bash my-script
wird funktionieren , wenn Sie noch Schritte tun 1-4.sudo
oder einer anderen Methode zur Erhöhung von Berechtigungen ausführen . Und es erlaubt Ihnen nicht, dievirtualenv
pro Ausführung zu ändern , was der Hauptgrund dafür wäre, dass~/virtualenv/bin
Sie nichtPATH
dauerhaft in Ihrer Ausführung sind . Das Hinzufügen des Verzeichnisses vor dem Verzeichnis istPATH
bei Bedarf die beste Methode.Angenommen, Ihre Aliasdatei lautet " ~ / .bash_aliases ", fügen Sie dies in Ihr Skript ein:
( via )
quelle
Alternativ können Sie jederzeit
source
Ihr Skript verwenden, um die Aliase zwangsweise zu verwenden. Angenommen, Sie haben einen Alias vonrm
in Ihrem~/.bashrc
:während
moveToTrash
ist ein Programm in Ihrem/usr/bin
. Jetzt haben Sie ein Skript mit dem Namentest.bash
:Wenn
test.bash
direkt ausgeführt wird, können Sie die Ausgabe sehen/bin/rm
, währendsource test.bash
die Ausgabe erhalten wirdquelle