web-dev-qa-db-fra.com

Comment masquer la commande de stock dans Bash

J'ai une fonction que je lance souvent à partir de la CLI, alors je lui ai donné le nom abrégé t:

$ which t
/home/dotancohen/.bin/t

$ cat `which t`
#!/bin/bash
ctags-exuberant -f php.tags --languages=PHP -R

$ ls -lh /home/dotancohen/.bin/t
-rwxr-xr-x 1 dotancohen dotancohen 316 Jan  3 16:58 /home/dotancohen/.bin/t

$ echo $PATH
/home/dotancohen/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/dotancohen/.rvm/bin

Cependant, lorsque j'essaie d'exécuter le programme, je reçois un message indiquant que je devrais installer une autre application utilisant également le nom t:

$ t
The program 'task' is currently not installed. To run 'task' please ask your administrator to install the package 'taskwarrior'

Comment faire pour que Bash exécute /home/dotancohen/.bin/t lorsque j'entre t?

4
dotancohen

Ceci est dû au fait que vous avez t défini comme un alias (ou une fonction), vous pouvez le trouver en utilisant le type intégré:

type -a t

Les alias, fonctions (et autres fonctions intégrées du shell) ont priorité sur les exécutables externes.

Pour exécuter l'exécutable t à partir de votre PATH, faites:

't'

Ou

"t"

Ou

\t

Notez que juste t n’est pas un bon nom pour un fichier.

8
heemayl