Як перевірити, яка команда взята?


9

У мене є скрипт , названий foo.shв /usr/local/sbin. Крім того, я використовую ще один сценарій з такою ж назвою. Він зберігається в /home/user/scripts.

Обидві стежки належать PATH. Як я можу дізнатися, що один з цих сценаріїв виконується при введенні foo.shв командному рядку? Чи можу я вплинути на це?

Відповіді:


10

Кілька днів тому я був задоволений своєю відповіддю. Я також знав, що whichкоманда не використовується для перевірки наявності команди. Зараз я не дуже задоволений своєю відповіддю, і я посилаюся на цю чудову відповідь .


За допомогою простої whichкоманди:

which foo.sh

Або typeкоманда:

type foo.sh

І ви можете впливати на це порядком шляхів у вашому $PATHабо через абсолютний шлях при запуску сценарію, EG

/home/user/scripts/foo.sh

Приклад

Якщо PATH визначено, як показано нижче

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

І ви запускаєте скрипт або щось інше, що є в /usr/local/binі в /usr/bin, сценарій в /usr/local/binяк вищий пріоритет.


1
Говорячи про bashі zshє також typeвбудований; натомість в zsh which, інакше від bash, є вбудований (а не /usr/bin/which)
kos


@muru спасибі Трохи я про це вже знав, але не в таких деталях. Я додав свої погляди до своєї відповіді. Знову дякую.
AB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.