Ich kann Tether jetzt umkehren, indem ich Alias ​​verwende, aber es stoppt beim Adb-Shell-Befehl

Ich habe einige Aliase erstellt, um Tether schnell umzukehren.

alias t='r && sh && n'
alias n='netcfg rndis0 dhcp'
alias sh='ad shell'
alias r='ad kill-server && ad start-server'
alias ad='adb'

Ich möchte t eingeben (was Reverse Tethering aktiviert), aber der Alias-Befehl macht nichts weiter sh

Wie kann man das besser automatisieren?

(Ich denke, es liegt daran, dass es nicht mehr in der ersten Shell ist, sondern in der Android-Adb-Shell.)

UPDATE: Ich habe die .bashrc bearbeitet, wie von Stephen Schrauger beantwortet, aber der Befehl gibt mich in die ADB-Shell ein und wenn ich das USB-Kabel abtrenne, bekomme ichnetcfg: command not found

Die Aliase sind jetzt:

alias t='r && sz $n'
n='netcfg rndis0 dhcp'
alias sz='ad shell'
alias r='ad kill-server && ad start-server'
alias ad='adb'

Was ist jetzt los?

UPDATE2 hierher verschoben: Hilfe bei diesem ADB REVERSE Tethering Script?

Das Update 2 hat das automatische Einschalten beim Tethering hinzugefügt (keine Notwendigkeit mehr für kostenpflichtige Apps, die das Gerät ständig aufblähen) und aktuelle Probleme geschrieben

Antworten (1)

Dies ist eher eine Linux-Frage und muss möglicherweise nach superuser.se verschoben werden , aber ich kann sie beantworten.

Unter Linux führen Sie Befehle mit &&(oder ||oder einfach ;) aus. Bei &&muss der erste Befehl ausgeführt werden und darf keine Fehlercodes aufweisen, damit der nächste Befehl in der Sequenz ausgeführt werden kann.

In Ihrem Setup sieht es so aus, als ob Sie eine ADB-Shell öffnen und dann netcfg rndis0 dhcp auf der adb-Shell ausführen möchten . Allerdings tut Linux das nicht. Stattdessen wartet es darauf, dass die ADB-Shell ohne Fehler beendet wird. Danach wird es netcfg rndis0 dhcpauf der Shell des Desktop-Computers ausgeführt.

Wenn Sie einen Befehl auf dem Android-Gerät ausführen möchten, starten Sie keine interaktive ADB-Shell (Standardeinstellung); Stattdessen übergeben Sie den Befehl wie folgt:

adb shellnetcfg rndis0 dhcp

Sie müssen nstattdessen Ihren Alias ​​in eine Variable ändern. Entfernen Sie die aliasDirektive, sodass die Zeile nur noch lautet n='netcfg rndis0 dhcp'. Ändern Sie dann Ihren Alias ​​für twie folgt

alias t='r && sh $n'

Übrigens sollten Sie wahrscheinlich keinen shAlias ​​verwenden, da die meisten Linux-Systeme bereits einen Befehl für sh.
Vielen Dank für Ihre Antwort. Bitte sagen Sie mir, warum ich immer noch einen Fehler bekomme
Sie müssen Ihre Aliase neu laden, nachdem Sie Ihre .bashrc-Datei bearbeitet haben. Der einfachste Weg, dies zu tun, besteht darin, einfach Ihren Desktop neu zu starten. Es hört sich so an, als würden Ihre alten Aliase immer noch im Gedächtnis herumhängen.
danke es funktioniert! :D (Ich habe das Terminal verlassen und es erneut gestartet, wie ich es immer getan habe, um .bashrc-Änderungen neu zu laden, aber es hat nicht funktioniert und nach dem erneuten Einloggen funktioniert es:D) wo hast du das gelernt $n? (Ich möchte mehr über Linux erfahren) Können Sie mir übrigens bei der Frage helfen, dass die Apps das Internet nicht erkennen?
Ich würde dich gerne positiv bewerten, aber ich brauche 15 Reputation
Das $ ist nur die Art und Weise, wie Bash auf gesetzte Variablen verweist. Sie setzen also eine Variable wie myvar=123und referenzieren sie mit $myvar(ex echo $myvar). Um mehr über Linux zu erfahren, schlage ich vor, diese Frage auf der Superuser-Stackexchange-Site zu lesen. Diese Seite ist Linux-Fragen gewidmet. superuser.com/questions/36605/learning-the-basics-of-linux-unix
Ich habe gerade meinen Befehl verbessert, aber ich habe noch ein paar Fragen. Bitte helfen Sie. Außerdem habe ich Sie gerade positiv bewertet, weil ich genug Ruf habe
Ich denke, die von Ihnen vorgenommenen Aktualisierungen sollten besser in eine brandneue Frage umgewandelt werden. Es wird bevorzugt, eine einzelne Frage pro Stackexchange-Frage zu haben, anstatt mehrere. Wenn Sie eine neue Frage beginnen, können Sie auf diese verlinken, damit die Leute den Hintergrund etwas besser verstehen können.
ok ich habe es so gemacht wie du es geschrieben hast