Sie haben eine geringfügige Inkompatibilität zwischen /bin/bash
und dem which
Befehl festgestellt.
Auf meinem System (Linux Mint), der which
Befehl ist eigentlich ein Shell-Skript, kein integrierter Befehl, und seine erste Zeile ist #! /bin/sh
. Das bedeutet, dass /bin/sh
die $PATH
Variable verwendet.
Dies variieren je nachdem, wie /bin/sh
eingerichtet ist (es ist manchmal ein symbolischer Link zu /bin/bash
), aber ein wenig Experimentieren zeigt, dass bash
behandelt einen wörtlichen ~
Charakter in $PATH
, als ob es der vollständige Pfad zu Ihrem Home-Verzeichnis war, aber /bin/sh
nicht. Da Sie
~/Development/android_sdk_latest/platform-tools
als eines der Elemente Ihrer $PATH
, bash
(Ihre interaktiven Shell) haben können Sie den adb
Befehl, aber sh
(die Schale durch which
verwendet) nicht.
Auf einigen Systemen, einschließlich Ihres OSX-Systems, ist which
eine binäre ausführbare Datei. Da es sich nicht um ein Bash-Skript handelt, entspricht es nicht der Bash-Behandlung von $PATH
.
Ich empfehle zwei Änderungen vorzunehmen.
Erstens, setzen Sie kein Literal ~
in Ihrem $PATH
. Um zum Beispiel das platform-tools
Verzeichnis auf Ihrem $PATH
, anstatt diese anfügen:
export PATH="$PATH:~/Development/android_sdk_latest/platform-tools" # BAD!
dies tun:
export PATH="$PATH:$HOME/Development/android_sdk_latest/platform-tools"
Der $HOME
auf den Pfad zu Ihrem Home-Verzeichnis erweitern. ~
wird in Strings mit doppelten Anführungszeichen nicht erweitert.
Zweitens, anstatt den Befehl which
zu verwenden, verwenden Sie den Befehl type
, der in bash
integriert ist.type
folgt den Regeln Ihrer aktuellen Shell und nicht denen von /bin/sh
, und Shell-Funktionen und Aliasnamen können gemeldet werden, die which
nicht sehen kann. Es hat mehrere nützliche Befehlszeilenoptionen; Geben Sie help type
an einer Bash-Eingabeaufforderung für Details ein.
Der treatement von ~
Zeichen des bash in $PATH
auf Tilde Expansion in den bash manual ‚s Abschnitt dokumentiert.
Was gibt Ihnen "type adb"? Und haben Sie einen buchstäblichen '~' Charakter in Ihrem '$ PATH'? –
@KeithThompson - 'adb ist hashed (/ Benutzer/ich/Entwicklung/android_sdk_latest/platform-tools/adb)', und ich denke, ja, tue ich. Ich setze den Pfad nach oben, indem ich ein Skript mit folgender Zeile quelle: 'export PATH =" $ PATH: ~/Entwicklung/android_sdk_latest/platform-tools "' –