Почему вы должны запустить CD. прежде чем что-то делать?


Ответы:


32

Вы не

По крайней мере, не просто так. Предыдущая строка в цитируемом документе имеет значение:

  • Настройте ваш запрос, чтобы сделать pwdкаждый раз, когда вы CD.
  • Всегда делайте, cd .прежде чем делать что-либо.

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

Эта «проверка» - хорошая вещь, и вы должны адаптировать ее форму. Более распространенный вариант (IMHO) этой темы - всегда распечатывать рабочий каталог по запросу.


11
Вероятно, лучше подумать об этом как «всегда печатать« pwd », прежде чем делать что-то важное, чтобы убедиться, что вы находитесь в каталоге, который, по вашему мнению, вы есть»
Род МакФерсон

4
Почему бы просто не сделать , pwdпрежде чем делать что - нибудь?
Мартин Конечни

15
На самом деле, это имеет смысл. Если вы вошли в каталог через символическую ссылку, а затем ссылка будет удалена и заново создана в другом месте, например, во время развертывания сервера, где версии контролируются с помощью символической ссылки на «current_release», то выполнение cd .приведет к изменению фактического базового уровня. каталог , который вы в.
Стюарт

1
+1 за « всегда распечатывать рабочий каталог по приглашению». Это то, что я делаю.
Пэдди Ландау

4
@Stewart К сожалению , это не поможет , если символическая ссылка меняется после cd . того, как, но , прежде чем делать что - нибудь еще. Это просто уменьшает вероятность оказаться в неправильном каталоге, но не решает общую проблему. Если вы не переключитесь на настоящий каталог, используя что-то вроде, cd $(readlink -f .)учитывая, что вы действительно хотите остаться там.
Scai

18

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

Например,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

Вывод some_commandне был записан на диск.

Ввод cd .перед выполнением команды выявит проблему.

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

Если текущий каталог рабочего каталога был удален и создан заново, при наборе текста cd .будет «обновлена» ссылка на этот каталог.

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz

13

Я думаю, что более важно показать ваш текущий каталог.

На каждом Linux-сервере я изменяю приглашение /etc/bashrc, меняя «W» на «w».

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

в

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

Эффект этого:

[root@xt include]#

против

[root@xt /usr/src/spl-0.6.1/include]# 

является PS1специфичным для bash?
QDII

Я так думаю ... Это все, что я использую.
ewwhite

1
Ваши изменения могут быть потеряны при следующем обновлении системы, хотя.
ot--

2
@ ott-- Придерживайтесь своих ~/.profileили ~/.bash_profileобновлений/etc/skel/.profile
jscott
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.