Wie erstelle ich eine weiche oder symbolische Verknüpfung?

465

Ich installiere p4v in /opt, bin aber /usr/binauf meinem Weg. Ist es möglich, einen weichen oder symbolischen Link für p4v von /optbis zu erstellen /usr/bin, sodass ich nur "p4v" eingeben kann, da /usr/binsich dieser in meinem Pfad befindet?

Kaffee
quelle

Antworten:

666

Sehen man ln.

Verwenden Sie zum Erstellen eines Symlinks, unter /usr/bin/bardem auf die Originaldatei verwiesen wird /opt/foo, Folgendes:

ln -s /opt/foo /usr/bin/bar

Sie müssten den obigen Befehl als root (dh mit sudo) anwenden .

Michał Šrajer
quelle
Ich benutze: sudo ln –s /etc/apache2/sites-available/redmine /etc/apache2/sites-enabled/000-redmineFehler bekommen:ln: target '/etc/apache2/sites-enabled/000-redmine' is not a directory
RAJ ...
1
In der Ubuntu-Dokumentation heißt es: "Erstellt standardmäßig feste Links, symbolische Links mit --symbolic." Wird mit der obigen Lösung ein symbolischer Link erstellt, wie vom OP gefordert?
Tanay
4
Ich dachte, César wollte seine Dateien in / opt und / usr / bin ablegen, um den symbolischen Link zu haben, nicht anders herum.
Missgeschick
4
@mishap ist für mich richtig. Es ist anders herum.
Daniel Szmulewicz
2
@kevinmicke nach Ihrer Erklärung endlich erkannt, dass die Erklärung der Antwort in umgekehrter Reihenfolge als der Befehl angegeben wurde, so dass mein Gehirn (und andere) es rückwärts lesen
Andrew
40

Der Fehler ist, dass Sie den Befehl falsch schreiben. Der richtige Weg ist

ln -s /<full>/<path>/<to>/<file> /usr/local/bin

http://ubuntuforums.org/showthread.php?t=2001697

Pedro Arnoldo Machado Duran
quelle
Beachten Sie den führenden Vorstrich/
Streitkolben
Danke, ich habe total verpasst, dass ich den absoluten Pfad zur verlinkten Datei brauchte.
Andi R
21

Wenn sich die ausführbare Datei 'p4v' unter / opt / bin / p4v befindet, können Sie einfach Folgendes ausführen:

sudo ln -s /opt/bin/p4v /usr/bin/p4v
sudo chmod ugo+x /usr/bin/p4v

Es wäre besser, / opt / bin (oder wo immer sich die ausführbare Datei befindet) zu Ihrem Pfad hinzuzufügen:

echo "export PATH=\$PATH:/opt/bin" >> ~/.profile
reset
dv3500ea
quelle
~/.profilewäre besser zum einstellen $PATH.
Lekensteyn
Sie können bearbeiten /etc/environment, um PATH systemweit zu ändern.
Michał Šrajer
4

Überprüfen Sie den Softwarestandort auf diese Weise.

which application-name #replace for the application you are looking for

zum Beispiel

which skype

Ausgabe wird dies sein.

/usr/bin/skype 

So erstellen Sie den Softlink. Sie möchten beispielsweise den Softlink für skypeauf Ihrem Desktop erstellen

ln -s /usr/bin/skype ~/Desktop/

Weitere Informationen zu ln.

man ln

oder

ln --help
Hafiz Shehbaz Ali
quelle
2
ln -s -n ./TargetDirectory ./Nickname

Beachten Sie, dass dies funktioniert, wenn sich beide Knoten im selben Baum unter Ihnen befinden. Sie können die relative Notation verwenden

  • -s Befehl macht es zu einem symbolischen Link
  • -n ermöglicht das Erstellen eines Symlinks vom Typ Ordner
Mohamad El Boudi
quelle
Willkommen bei askubuntu.com. In diesem Fall ist die $Angabe einer Eingabeaufforderung eine Stilauswahl, die wahrscheinlich kein Problem darstellt. Bedenken Sie jedoch, dass das Einfügen von Dingen in einen anderen Codeblock als den Code und dessen Ausgabe Verwirrung stiften kann.
J. Starnes
1

Diese Vorlage war für mich hilfreicher als die obigen Antworten. Wahrscheinlich nicht korrekter, nur weniger verschleiert:

ln -s <path/to/real/file-or-folder> <symlink path>

Ersetzen Sie einfach die Teile in <>'s

LucasY
quelle
0

Wenn es heißt target is not a folder, gibt es Leerzeichen in Ihren Ordnernamen, zB: New Folderhat ein Leerzeichen

Sie müssen den Pfad bearbeiten und \nach jedem Leerzeichen in den Pfaden einen Backslash einfügen

z.B:

ln -s /opt/bin /usr/var/New\ Folder
Sam
quelle
3
Dies ist keine Antwort auf die Frage des OP. Bitte warten Sie, bis Sie genug Reputation haben, um Kommentare hinzuzufügen.
derHugo
0

Ich habe festgestellt, dass es einfacher ist, zu der Stelle zu gelangen, an der sich der Link befinden soll, und den Link dann mithilfe von zu erstellen sudo ln -s /path/to/source/file, als dies zu tun ln -s target source.

Also in deinem Fall würde ich das cd /usr/bindann tun sudo ln -s /opt/bin/pv4. Der andere Weg hat in meinem Fall nicht funktioniert.

Briankip
quelle