Я недавно узнал, что
. ./.a.a
и ./.a.a
то же самое.
Однако попытка source source .a.a
дает ошибку. ИМО, .
будучи псевдонимом Bash, source
не должен вести себя иначе, так чего мне не хватает?
Бонус, почему все . .
нормально, а source source
нет?
. script
и./script
то же? Они, безусловно, нет . Кроме того,.
это не псевдонимsource
. Это наоборот..
это стандарт иsource
псевдоним.
..
команде, но я имею в виду, чтоsource
это просто лучшая команда, когда вы видитеsource somefile
в сценарии, вы сразу знаете, что делает этот оператор, но. somefile
не только не очевидно, что он делает, Вы можете легко пропустить.
персонажаbash: .: .: is a directory
об ошибке,. .
должно быть объяснено.. ./.a.a .
был быть честным. : -DA вроде тестов, если вы будете. :-) Связанный вопрос - это здорово, большое спасибо. Что дало мне эту идею: тот факт, что я не видел разницы в выполнении файлов таким образом, и тот факт, что я читал где-то,.
является псевдонимом дляsource
. :-)Ответы:
Вы не можете просто заменить
.
сsource
везде; еслиработает, вы можете заменить первое
.
(по крайней мере, в Bash):Второй
.
представляет текущий каталог, вы не можете заменить этоsource
(особенно не./
с ,source
как вы сделали).было бы хорошо, если бы у вас был файл, вызванный
source
в текущем каталоге, содержащий что-то значимое для вашей текущей оболочки. Я не вижу, как. .
было бы хорошо ...Кроме того,
. ./.a.a
и./.a.a
это не то же самое, вторая форма запускается.a.a
в отдельной оболочке. См. В чем разница между поиском ('.' Или 'source') и выполнением файла в bash? для деталей.источник
source
является ключевым словом оболочки, которое должно использоваться следующим образом:source
file
гдеfile
содержит допустимые команды оболочки. Эти команды оболочки будут выполняться в текущей оболочке, как если бы они вводились из командной строки. Теперь.
file
делает точно так же.Помимо этого,
.
означает "текущий рабочий каталог", как в./xyz
("xyz
в этом каталоге") илиa/b/./c/./d
(который идентиченa/b/c/d
).Кроме того,
.
имя файла имеет значение только в соответствии с соглашением, в.foobar
котором указывается «скрытый» файл (не совсем ...) или как вfoobar.pdf
, который указывает формат файла с помощью суффикса (здесь.pdf
).Эти разные значения не могут быть взаимозаменяемы.
источник
.
ничуть не устарела. Это, в отличиеsource
от переносимого, POSIX-определенного способа получения файла.source
Псевдоним оболочки конкретным и может быть либо отсутствует (например , вdash
) или ведут себя по разному от стандарта.
.