Почему делает '/', имеют '..' запись?

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

С экраном представление каждого приложенного терминала независимо от других. С tmux все приложенные терминалы видят то же самое.

Скажите, что у Вас есть два терминала, присоединенные к единственной tmux сессии. При вводе ^B 1 в один терминал другой терминал также переключается на окно 1.

Когда у Вас есть два терминала, присоединенные к сессии одного экрана, и Вы вводите ^A 1 в один, он не имеет никакого эффекта на другой терминал.

Это основано на моем опыте с tmux 1.2; я вижу 1.3, отсутствует, но я ничего не заметил в журнале изменений об этом изменении поведения.

Если Вы любите экранное поведение и хотите его в tmux:

Если Вашу исходную tmux сессию называют 0 (значение по умолчанию), затем можно сделать tmux new-session -t 0) запустить новую независимую сессию, подключенную к тому же набору окон, которые могут затем иметь его собственное представление.

81
29.08.2016, 05:56
2 ответа

/.. точки к /:

$ ls -id /
2 /
$ ls -id /..
2 /..

У обоих есть то же inode число, которое, оказывается, 2 в этой системе. (Точное значение не имеет значения.)

Это сделано для непротиворечивости. Таким образом, не должно быть кода в ядре для проверки, где это в настоящее время - когда это обрабатывает a .. в пути. Можно сказать cd .. навсегда, и никогда не идите глубже, чем корень.

73
27.01.2020, 19:30
  • 1
    @George я верю использованию, которое использует в своих интересах использование относительных путей это; Вы не должны предполагать текущую папку, Вы просто делаете ../../../../../../../../../../../../../../../../etc/passwd –  Michael Mrozek♦ 12.01.2011, 05:36
  • 2
    Какое различие, которое сделало бы с простым использованием/etc/passwd? –  jlliagre 12.01.2011, 09:46
  • 3
    @jlliagre: существуют программы, которые проверяют, находится ли файл под текущим каталогом путем тестирования, начинается ли он /. Между ../ (не обязательно вначале!) и символьные ссылки, очень трудно сделать, особенно полагая, что взломщик может перемещать каталоги под носом программы. –  Gilles 'SO- stop being evil' 12.01.2011, 10:08
  • 4
    , который я вижу, они должны, по крайней мере, использовать canonicalize_file_name или realpath. –  jlliagre 12.01.2011, 16:37
  • 5
    @musiphil: это - хорошая вещь. Michael просто указывал, что это - функция, которая может быть использована для плохих концов, если код не написан для преодоления использования. Если бы мы избавились от всех функций, которые могут быть использованы, то компьютеры были бы очень тусклыми вещами. tar Соляриса –  Warren Young 03.12.2012, 05:50

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

Корневой каталог текущего пространства имен является особенным в этом .. точки к тому же самому как ., но не настолько особенный для повреждения гарантии, сделанной ОС к программам. Когда те условия контракта нарушены, вещи идут не так, как надо, и все указывают пальцами.

Корневой каталог, который Вы видите, мог бы, в файловой системе на диске, на самом деле иметь другой родительский каталог. Представление файловых систем, обеспеченных в смонтированном пространстве имен, - то, что осуществляет .. = . правило для /. Таким образом, если Вы находитесь в a chroot() тюрьма, Вы будете видеть /.. = / даже при том, что кто-то за пределами тюрьмы, смотрящей на /path/to/jail/.. будет видеть /path/to вместо этого.

38
27.01.2020, 19:30
  • 1
    Сколько программ зависит от "контракта" это / имеет .. это указывает на себя? Я думаю, что это, возможно, было одинаково (или больше) приемлемо для / НЕ иметь ... –  musiphil 03.12.2012, 05:13
  • 2
    У кого-либо есть источник, который подтверждает эту теорию? –  Julian Hollmann 29.08.2014, 11:41
  • 3
    Ну, man 5 dir в системе BSD обойдет Вас через зарегистрированный API, и объекты, указанные в API, являются частью контракта. –  Phil P 01.10.2014, 20:47
  • 4
    находит, имеет оптимизацию, которая полагается на контракт n+2. –  ctrl-alt-delor 15.07.2016, 21:45
  • 5
    О, и конечно если Вы хотите источник, затем просто идут, читает спецификацию. POSIX по pubs.opengroup.org/onlinepubs/9699919799 в разделе 4.12: "Специальная точка имени файла должна обратиться к каталогу, указанному его предшественником. Специальная точечная точка имени файла должна обратиться к родительскому каталогу своего каталога-предшественника. Как особый случай, в корневом каталоге, точечная точка может относиться к самому корневому каталогу". –  Phil P 20.07.2016, 21:51

Теги

Похожие вопросы