(Unix / Linux) Как выполнять разные команды с одинаковыми именами?

3483

У меня есть два отдельных файла на моем компьютере,

which execfile /usr/local/bin/ /usr/bin/ 

Итак, у меня есть два файла с одинаковым именем в двух разных каталогах. Как я могу точно указать, какую команду запустить?

Благодарю.

2

6 ответов на вопрос

8

Вы можете указать полный путь к команде, когда вы запускаете ее:

/usr/bin/execfile 

или же

/usr/local/bin/execfile 

запустить точный файл по этому пути

kthanks, есть ли способ выбрать одну из этих команд по умолчанию? 13 лет назад 0
Да, если вы хотите, чтобы / usr / bin / execfile был значением по умолчанию, убедитесь, что / usr / bin / находится перед / usr / local / bin / в переменной окружения `PATH` оболочки. Bertrand Marron 13 лет назад 6
@tusbar +1 для правильного ответа;) 13 лет назад 0
1
Bertrand Marron
/usr/local/bin/execfile 

или же

/usr/bin/execfile 
1
shahjapan

также проверьте это, если они оба принадлежат одному и тому же файлу - как это может быть ссылка

ls -al /usr/bin ls -al /usr/local/bin 

и проверьте, связаны ли они вместе

если они связаны, то вы можете выполнить любую без разницы, иначе вы должны указать полный путь

Это покажет, если они символические ссылки (вы увидите что-то вроде "/ usr / bin / execfile -> / usr / local / bin / execfile", если они есть). Чтобы увидеть, являются ли они жестко связанными, используйте `ls -li / usr / bin / execfile / usr / local / bin / execfile` и сравните их номера инодов. Dennis Williamson 13 лет назад 1
1
Dom De Felice

При попытке выполнить команду Foo, Foo ищется в каталогах, указанных в переменной PATH среды, в том же порядке, как они указаны. Если вы хотите избежать этого, введите полный путь к исполняемому файлу.

Введите это в терминале:

echo $PATH 

чтобы увидеть фактическое содержимое переменной среды PATH.

Например, если вы хотите всегда выполнять первые исполняемые файлы внутри / bin, убедитесь, что / bin идет первым внутри $ PATH. Вы можете указать PATH в файле .profile в вашем домашнем каталоге. Так что для примера выше, отредактируйте файл и поместите эту строку в конец:

экспорт PATH = / bin: $ PATH

Это будет работать только для вашего пользователя. Если вы хотите указать $ PATH общесистемным способом (он будет работать для всех пользователей, кроме тех, кто изменяет его в своем .profile), добавьте ту же строку выше в файл / etc / profile (вам потребуются права root). .)

Также помните, что файлы профиля анализируются только изначально. Это означает, что если вы отредактируете свой личный файл .profile, вам придется заставить свою оболочку повторно его анализировать. Вы можете сделать это, выйдя из системы и снова войдя в систему, или набрав:

источник ~ / .profile

Для общесистемного изменения введите

источник / etc / profile

Это заставит ваш текущий сеанс оболочки повторно проанализировать файл профиля. Если вы хотите, чтобы ваша полностью загруженная система снова проанализировала ее, я думаю, вам лучше перезапустить сеанс.

Также помните, что это может измениться, если вы используете оболочку, отличную от bash.

Вы можете найти интересную информацию на странице руководства bash: http://linux.die.net/man/1/bash

Смотрите раздел «Выполнение команд».

Кстати, спросите это на http://superuser.com/ 13 лет назад 0
1
fgm

Напишите псевдоним в ~ / .profile:

alias execfile='/usr/local/bin/execfile' 

После следующего входа в систему правильная версия будет выбрана автоматически. Начните другие с полного пути.

0
Matthew Flaschen
/usr/local/bin/execfile  /usr/bin/execfile