Bash, überprüfen Sie immer $ PWD als Teil des Pfades?

15

Hintergrund: Einer meiner Kollegen, der keinen Linux-Hintergrund hat, hat mich gefragt, ob ich ./vor einigen Befehlen und nicht vor anderen Befehlen arbeiten soll, und ich habe ihm erklärt, wie es PATHfunktioniert und wie Binärdateien für die Ausführung ausgewählt werden. Seine Antwort war, dass es dumm war und er wollte nur nicht ./vor Befehlen tippen müssen .

Frage: Gibt es eine Möglichkeit, das Verhalten der Shell so zu ändern, dass $PWDimmer das erste Element aktiviert ist PATH?

Christophe
quelle
Es mag dumm sein (oder auch nicht), aber jede Umgebung hat ihre Macken, und dies ist eine typische Unix-Shell-Masche.
RonJohn
12
Es ist eine Sicherheitsmaßnahme. Shells verwendet diese standardmäßig zu tun (man denke 1970er Jahre) und Multi-User - Systeme wurden wegen weithin angegriffen.
Charles Duffy
3
Seine Antwort war, dass es dumm sei : Der Kollege müsse sich selbst über dieses Thema informieren. Diese direkte Antwort zeigt eine Reaktion im PHB-Stil : Kein Verständnis oder keine Wertschätzung des zugrunde liegenden Systems.
Wolke
2
Warum lassen Sie die Binaries nicht einfach fallen ~/binund machen sie zu einem Teil davon PATH? Dies hält auch die Dinge organisiert.
Sergiy Kolodyazhnyy
3
Bei @Ziazis unter Windows wird das aktuelle Verzeichnis unabhängig davon berücksichtigt, ob es Teil von ist PATH(was die übliche Quelle für solche Überlegungen ist).
Stephen Kitt

Antworten:

55

Wenn Sie wirklich möchten, können Sie dies tun, indem Sie .Ihrem Pfad voranstellen :

export PATH=".:$PATH"

Dies ist jedoch eine schlechte Idee, da Ihre Shell jeden Befehl im aktuellen Verzeichnis vor anderen auswählt. Wenn jemand (oder ein anderes Programm) einen böswilligen lsBefehl in einem Verzeichnis ablegt, das Sie häufig verwenden, treten Probleme auf ...

Stephen Kitt
quelle
13
Dies ist ein ausgezeichneter Punkt, obwohl es vielleicht ausreichen würde, den zu verschieben. Exportieren Sie PATH = "$ PATH:" an das Ende des Pfads.
Christophe
12
In der Tat erinnere ich mich, dass .zu Beginn Ihres PATHdie Standardeinstellung für normale Benutzer war (wenn ich den Benutzer zumindest unter HP-UX mit "sam" erstellt habe; ich bin mir nicht sicher, was das alte SunOS angeht). Später wurde dieser Standard aus Sicherheitsgründen entfernt. Wenn Sie den .als letzten Artikel von Ihnen haben PATH, kann noch jemand auf typische Tippfehler hoffen.
Philippos
6
@Philippos, ja wie die berüchtigten /tmp/slStreich-Skripte, um Benutzer mit solchen Pfaden anzusprechen. Installieren Sie unter Debian und Derivaten das slPaket, um eine Vorstellung davon zu bekommen, wie oft Sie slanstelle von eingeben ls.
Stéphane Chazelas
Nein, es ist keine schlechte Idee, es ist eine gute, besonders wenn Sie ein Entwickler sind. Natürlich ist es auch eine gute Idee, eine Umgebung zu schaffen, in der niemand böswillige Befehle abgibt.
Jamesqf
4
@jamesqf, eigentlich ist es eine gute Idee, etwas einzugeben, ./wenn Sie Befehle im aktuellen Verzeichnis aufrufen möchten. Oder, wenn Ihr gewöhnliches aktuelles Verzeichnis ist /project/under/development/bin, dann fügen Sie das Ihrem hinzu PATH. Dies löst den Anwendungsfall Ihres Entwicklers. Es ist eine schlechte Idee, sich .an den Anfang zu setzen PATH, Punkt.
Wildcard
14

Obwohl dies keine direkte Antwort auf Ihre Frage ist, empfiehlt es sich, ein binVerzeichnis in Ihrem Ausgangsverzeichnis zu erstellen, das wie folgt lautet /home/user/bin:

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

Lassen Sie dort Ihre persönlichen Skripte einfügen. Das PATHwird in der Reihenfolge durchlaufen, in der Sie es definieren und Ihre persönlichen Skripte ausführen, ohne dass dies .erforderlich ist.

Valentin Bajrami
quelle
0

Sie müssen das haben. am Anfang Ihrer PATH-Variablen:

export PATH=".:$PATH"
Guru
quelle