У меня есть небольшой файл, который инициализирует tmux
сеанс, а затем создает несколько окон. После некоторой отладки и настройки все работало нормально, пока я не переименовал текстовый файл (с tmux
командами) из spam
в xset
:
$ source xset
bash: source: /usr/bin/xset: cannot execute binary file
Я теперь переименовал файл обратно и source spam
снова работает, но мне интересно, почему это так. Файл находится в моем домашнем каталоге, а не в /usr/bin
.
xset
. Попробуйsource ./xset
.Ответы:
bash
внутренний источник команд, сначала ищет имя файла в PATH, если не слэш (/
) в имени файла.xset
является исполняемым файлом в вашем PATH, следовательно, проблема.Вы можете выполнить
source ./xset
или изменить параметр sourcepath на off с помощью:С
bash
man-страницы:источник
Команда
source
будет :Это поведение определяется (для
.
его псевдонима) POSIX . Почему? Ну, вы можете поместить исходные скрипты конфигурации внутриPATH
и получить к ним доступ без точного пути. Чтобы получить доступ к нужному файлу, вместо этого укажите абсолютный или относительный путь:Все вышеперечисленное будет работать так, как вы изначально ожидали. Вы также можете отключить
sourcepath
с помощьюshopt
.источник