Also habe ich versucht zu experimentieren und ein alias
In erstellt .bashrc
. Wenn ich jedoch den Befehl teste, erhalte ich:
[rkahil@netmon3 ~]$ menu
-bash: menu: command not found
Folgendes habe ich in der .bashrc
Datei:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'
Das Lustige ist, als ich den Alias erstellt habe vi
, hat es funktioniert. Aber Menü nicht. Ich habe frühere Beiträge auf UnixStackExchange nachgeschlagen und versucht, anderen Beiträgen zu folgen, aber ohne Erfolg. Hat noch jemand Vorschläge?
./menuScript.sh: command not found
No such file or directory
, was immer noch nicht mit dem Fehler des OP identisch ist. Der Punkt bleibt jedoch bestehen - am besten mit einem absoluten Pfad, es sei denn, der Alias wird immer nur aus dem Verzeichnis verwendet, in dem er sichmenuScript.sh
befindet.Antworten:
Sie sollten es mit versuchen
alias menu='bash ./menuScript.sh'
. Ich bin derzeit nicht auf einem Linux-Computer, kann ihn also nicht selbst testen, aber er sollte funktionieren. Wenn Sie den Alias aufrufen, weiß er nicht, was mit dem Pfad zu tun ist, daher müssen Sie denbash
am Anfang einfügen.Das Zurücksetzen des Terminals hilft nach der Änderung.
quelle
menuScript.sh
wurde nicht alschmod
ausführbar ausgeführt. In diesem Fall wäre die Fehlermeldung "Berechtigung verweigert" gewesen. Ich vermute, dass das Erzwingen eines erneuten Lesens der.bashrc
Datei die Antwort ist. Es tut , wenn der Benutzer tippt ... ... ... ... ... ... ... PS Die Schale weiß , was auf die gleiche Weise mit dem Weg zu tun./menuScript.sh
- indem man versucht , die Datei auszuführen.Wenn Sie das tun
Sie erstellen einen Alias, der "diese Datei" sagt, aber nicht sagt, was Sie tatsächlich damit tun sollen.
Wenn Sie dies jedoch tun
oder
Sie sagen, führen Sie diese Datei aus.
quelle
Haben Sie daran gedacht, Ihre ~ / .bashrc-Datei nach den Änderungen zu beziehen? Weil die Änderungen in Ihrer .bashrc-Datei wirksam werden, nachdem Sie Ihren Computer neu gestartet oder einfach die Datei bezogen haben.
quelle
.bashrc
, tun Sie Folgendes ...". Auf der anderen Seite scheinen klärende Fragen (z. B. "Hast du vergessen ...?") Eher für Kommentare geeignet zu sein. Es würde nicht viel Umformulierung erfordern, um diesen Beitrag für eine Antwort besser geeignet zu machen.source ~/.bashrc
oder. ~/.bashrc
, dann können Sie einfach auch eine andere Shell öffnen. So einfach ist das. Kein Neustart erforderlich.Der Grund, warum es funktioniert hat,
vim
ist, dass dies ein Programm ist, das bereits ohne direkten Pfad aufgerufen werden kann. Sie müssen nicht explizit sagen "Ich möchte, dass dies als Programm ausgeführt wird", da diesvim
bereits eines ist. Im Betriebssystem ist fest codiert, dass beim Empfang des Befehlsvim
die Datei ausgeführt wird/usr/bin/vi
oder wo immer sich das eigentliche Programm befindet.quelle
vim
verfügbar"$PATH
, die eine ausführbare Binärdatei, ein ausführbares Skript oder sogar einen Symlink zu einem anderen Programm sein kann. Wenn Sie den Eintrag entfernen, ist er fürvim
Benutzer nicht mehr verfügbar.ifvi
, das in meinem lebt$HOME/bin
(was zufällig in meinem ist$PATH
). Ich benutze es genauso, wie ich eine vom System installierte Binärdatei ausführen könnte. Es ist wirklich egal, dass es sich um ein benutzerdefiniertes Programm handelt.Es gibt zwei Probleme mit dem Alias
Sie müssen sich in einem bestimmten Verzeichnis befinden, wenn Sie den Alias aufrufen. Wenn Sie sich in einem Verzeichnis befinden, in dem
menuScript.sh
es keinen gibt, kann der Alias nicht ausgeführt werden.Es ist besser, wenn Sie
menuScript.sh
beim Definieren des Alias den vollständigen absoluten Pfad zum Skript angeben , zo.ä.
Wie andere bereits gesagt haben, ist ein weiterer Grund, warum der Alias fehlschlagen kann, dass das Skript nicht ausführbar ist oder eine ungültige
#!
Zeile enthält. Stellen Sie sicher, dass das Skript mit ausführbar istund dass die erste Zeile im Skript ist
oder was auch immer der Pfad zu
bash
(oder für welche Shell das Skript geschrieben ist) auf Ihrem System ist.quelle