staging.inyokaproject.org

Eigene Skripte aus $HOME aufrufen

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Helge55

Anmeldungsdatum:
6. Juli 2015

Beiträge: 158

Hallo zusammen,

im Laufe der Zeit habe ich mir in paar Skripte geschrieben die in einem Skript stehen. Die würde ich gern aufrufen ohne vorher mit cd Skript in das Verzeichnis zu wechseln. In früheren Zeiten unter Solaris konnte man einfach die PATH Variable entsprechend erweitern. Da sah die .profile Datei auch noch anders aus. Hat jemand eine Idee, was ich machen kann? Danke für Antworten.

Viele Grüße

Helge

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

Helge55 schrieb:

[…] Solaris

Wenn Du etwas haben willst, was sich wie Solaris verhält, nimm Solaris. Linux verhält sich anders als Solaris, auch wenn beide gemeinsame Ahnen haben.

[…] PATH Variable entsprechend erweitern.

Du kannst in die Variable PATH schreiben, was auch immer Du willst:

PATH=$HOME
PATH='jeder beliebige Unsinn'
PATH="$PATH:$HOME"

Ob das allerdings sinnvoll ist, musst Du selber herausfinden. Vor Experimenten jedenfalls sinnvoll ist:

echo $PATH 

Damit weißt Du wenigstens den alten Wert.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Die würde ich gern aufrufen ohne vorher mit cd Skript in das Verzeichnis zu wechseln.

Das geht mit

1
~/skript

In früheren Zeiten unter Solaris konnte man einfach die PATH Variable entsprechend erweitern.

Ich weiß nicht, was unter Solaris Usus ist oder war, aber das ist und war mit Linux auch immer möglich.

Da sah die .profile Datei auch noch anders aus.

Die sah unter Linux auch früher anders aus, und unterscheidet sich von Distribution zu Distribution. Unter Ubuntu ändert man dazu i.d.R. die ~/.bashrc und ich glaube das ist da schon vorbereitet, allerdings nur so ähnlich, nämlich in dem Du einen Ordner ~/bin erzeugst, und da Deine Scripte speicherst. Wenn so ein Verzeichnis existiert wird das m.W. automatisch in den Pfad aufgenommen. Sonst schreib es Dir selbst in Deine ~/.bashrc.

1
PATH="$PATH:$HOME/bin"

Helge55

(Themenstarter)

Anmeldungsdatum:
6. Juli 2015

Beiträge: 158

Ich danke euch. Meine Skripte möchte ich nicht nach ~/bin stellen. Es ist mir gelungen, $PATH um das Skripte Verzeichnis zu erweitern. Der Test hat direkt funktioniert.

Viele Grüße

Helge

lama4linux

Avatar von lama4linux

Anmeldungsdatum:
17. November 2016

Beiträge: 145

Wenn du die Skripte nicht aus deinem Verzeichnis verschieben möchtest, könntest du es auch mit einer symbolische Verknüpfung/Softlink in /bin versuchen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

user_unknown schrieb:

Unter Ubuntu ändert man dazu i.d.R. die ~/.bashrc und ich glaube das ist da schon vorbereitet, allerdings nur so ähnlich, nämlich in dem Du einen Ordner ~/bin erzeugst, und da Deine Scripte speicherst. Wenn so ein Verzeichnis existiert wird das m.W. automatisch in den Pfad aufgenommen.

Genau. Der Code dafür steht in der ~/.profile - man kann auch in /etc/skel/.profile schauen (Zeile 20 bis 22):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

Da ist sogar auch ein ~/.local/bin als Verzeichnis mit ausführbaren Dateien vorgesehen.

Helge55 schrieb:

Meine Skripte möchte ich nicht nach ~/bin stellen.

Warum nicht?

lama4linux schrieb:

Wenn du die Skripte nicht aus deinem Verzeichnis verschieben möchtest, könntest du es auch mit einer symbolische Verknüpfung/Softlink in /bin versuchen.

Das ergibt aber nur in Randfällen Sinn, also z.B., wenn die Dateien jetzt in einem separat gemounteten Volume stehen und man die da aus Gründen von Backups o.ä. lassen will oder in einem Verzeichnis, das anderweitig gespiegelt wird (z.B. ~/Dropbox).

Helge55

(Themenstarter)

Anmeldungsdatum:
6. Juli 2015

Beiträge: 158

Also, um meine Lösung zu zeigen: Ich hab folgendes in die .profile geschrieben:

1
2
# Skript Verzeichnis in $PATH aufnehmen.
PATH="$HOME''/Dokument/Skript'':$PATH"

Viele Grüße

Helge

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Helge55 schrieb:

Also, um meine Lösung zu zeigen:

👍

Ich hab folgendes in die .profile geschrieben:

1
2
# Skript Verzeichnis in $PATH aufnehmen.
PATH="$HOME''/Dokument/Skript'':$PATH"

Das dürfte nicht funktionieren, weil die einfachen Anführungszeichen da nichts zu suchen haben:

1
2
3
$ x="$HOME''/Dokument/Skript'':$PATH"
$ echo "$x"
/home/user''/Dokument/Skript'':/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Helge55 schrieb:

Also, um meine Lösung zu zeigen: Ich hab folgendes in die .profile geschrieben:

1
2
# Skript Verzeichnis in $PATH aufnehmen.
PATH="$HOME''/Dokument/Skript'':$PATH"

$HOME bedarf keiner Maskierung, denn /home/helge55 enthält keine Leerzeichen und die Variable wird links von einem Gleich und rechts von einem Slash begrenzt - das versteht die Bash als Grenzen des Variablennamens und verwendet den abschließenden Slash als Verzeichnistrenner.

Aber Du nimmst nicht das Skript in den Pfad auf, sondern das Verzeichnis, in dem das Skript liegt. Du bekommst das ganze Verzeichnis - alles oder nichts.

1
PATH="$HOME''/Dokument/'':$PATH"

Zwei einfache Apostrophe, maskiert mit Anführungsstrichen, stehen für sich selbst. Sowas will man nicht in seinen Verzeichnisnamen haben und hast Du höchstwahrscheinlich auch nicht. Ohne Anführungsstriche würde das sogar funktionieren, denn dann maskierten die Apostrophe Nix.

1
PATH=$HOME''/Dokument/''":$PATH"

Aber dann können sie auch weg.

1
PATH=$HOME/Dokument/":$PATH"

Der vorherige $PATH könnte Leerzeichen enthalten, die der Maskierung bedürfen, aber meist ist das ja nur das übliche (/usr(/local))/(s)bin: Zeug und daher auch unnötig.

Aber dann können sie auch weg.

1
PATH=$HOME/Dokument/:$PATH
Antworten |