web-dev-qa-db-fra.com

Que sont "$ PATH" et "~ / bin"? Comment puis-je avoir des scripts personnels?

Qu'est-ce que $PATH?

Comment puis-je avoir des commandes/programmes qui ne sont disponibles que pour moi?
J'ai déjà vu ce chemin, ~/bin, mais à quoi sert-il et comment l'utiliser?

29
Roger Pate

$ PATH est une variable d'environnement utilisée pour rechercher des commandes. Le ~ est votre répertoire personnel, donc ~/bin sera/home/utilisateur/bin; c'est un répertoire normal.

Lorsque vous exécutez "ls" dans un shell, par exemple, vous exécutez le programme/bin/ls; l'emplacement exact peut varier en fonction de la configuration de votre système. Cela se produit parce que/bin est dans votre $ PATH.

Pour voir le chemin et trouver où se trouve une commande particulière:

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls     # searches $PATH for an executable named "ls"
/bin/ls
$ ls           # runs /bin/ls
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ /bin/ls      # can also run directly
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

Pour avoir votre propre répertoire bin privé, il vous suffit de l'ajouter au chemin. Faites ceci en éditant ~/.profile (un fichier caché) pour inclure les lignes ci-dessous. Si les lignes sont commentées, il vous suffit de les décommenter; s'ils sont déjà là, vous êtes tous ensemble!

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

Vous devez maintenant créer votre répertoire ~/bin et, comme .profile est exécuté lors de la connexion et n’ajoute que ~/bin s’il existe à ce moment-là, vous devez vous reconnecter pour voir le PATH mis à jour.

Testons-le:

$ ln -s $(which ls) ~/bin/my-ls   # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls          # lookup through $PATH
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ ~/bin/my-ls    # doesn't use $PATH to lookup
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
26
Roger Pate

Concernant ~/bin et les commandes/programmes disponibles uniquement pour votre utilisateur

Les versions récentes d'Ubuntu incluent le répertoire ~/bin dans votre $PATH, mais uniquement si le répertoire ~/bin existe.

Si ça n'existe pas:

  1. Assurez-vous que votre ~/.profile contient la strophe suivante (le ~/.profile par défaut le contient déjà):

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. Créez le répertoire ~/bin:

    mkdir -p ~/bin
    
  3. Redémarrez votre ordinateur ou forcez bash à relire ~/.profile:

    exec -l bash
    
19
Danilo Piazzalunga