Синтаксис должен быть разборчивым, чтобы оболочка могла понять, как расширить то, что вы ему даете.
Попробуйте это на системе Linux:
sudo useradd -m .vimrc
vim ~.vimrc
Vim будет открыт, но он будет смотреть на каталог /home/.vimrc/
.
Это патологический случай, который вы редко или никогда не видели в реальном мире? Да. Означает ли это, почему синтаксис аргументов, которые вы передаете, должен быть последовательным и использовать такие вещи, как разделители путей? ИМО, да.
Если я скажу свою раковину vim ~dan
, то что должно это сделать? Должен ли он попытаться открыть /home/dan/
? Или /home/dan/dan
?
Если я скажу свою оболочку vim ~dan/foo
, что тогда делать? Должен ли он попытаться открыть /home/dan/foo
или /home/dan/dan/foo
?
Что делать, если я сохраняю свои платежные записи в $HOME/bill/
в таких файлах, как 0001.txt
, должен ли он работать, если я скажу vim ~bill/0001.txt
? Что, если бы я хотел /home/bill/0001.txt
, как я могу сказать это (в переносном смысле)? Я не хочу разбирать /etc/passwd
, чтобы найти homedirs, предполагая, что ОС даже сохраняет пользовательские данные в этом файле.
Я вижу это как сродни заявлению, как:
b = a++;
Это довольно часто для программистов спутать поведением этого заявления, потому что, пока вы не понять последовательность событий, которые происходят, вы можете ожидать, что b
будет присвоено значение, которое больше 1 a
. Вы даже можете ожидать, что a
не изменится. Но ни одна из этих вещей не верна.
Корпуса подобны любому языку программирования таким образом: ясность имеет значение.
Это не по теме, но почему бы вам не понадобиться косая черта? Если у вас есть каталог под названием «foo», который содержит файл под названием «bar.txt», вы ожидаете, что «vim foobar.txt» будет работать? – JJJ
Это не в каталоге, Юхана. – geoyws
Ваш домашний каталог не является каталогом? – JJJ