Как найти фактический рабочий каталог?

Из того, что я помню назад в день ориентацию диска, когда она была отформатирована, была ориентация, которой был диск, предполагают для выполнения с. Конечно, это было хорошо более чем десятилетие назад (более чем 2?). Я не видел фактического теста этого, но справедливости ради стоит отметить, это больше не имеет значения.

Я думаю, что мы можем верить производителям с этим.

3
задан 29 June 2009 в 17:53
6 ответов

perheps:

pwd -P 

от справки:

"-P: распечатанный путь не будет содержать символьные ссылки".

15
ответ дан 3 December 2019 в 04:36
  • 1
    Оговорка по Фрейду там? –  Dan Carley 29 June 2009 в 17:54
  • 2
    @Dan C - право. но it' s зафиксированный теперь;-] [надо надеяться], –  pQd 29 June 2009 в 17:55
  • 3
    Ха-ха. Я видел его перед редактированием и был немного смущен. –  Dan Carley 29 June 2009 в 17:57
/bin/pwd

Это не знает, где Вы были или как Вы добрались там, таким образом, это работает он из первых принципов.

5
ответ дан 3 December 2019 в 04:36

Для решения этой проблемы для общего случая (т.е. не просто текущий каталог) используйте:

readlink -f PATH
5
ответ дан 3 December 2019 в 04:36

От оболочки.

pwd -P

От пространства пользователя.

/bin/pwd
3
ответ дан 3 December 2019 в 04:36

Чтобы получить более переносимую (POSIX-совместимую) команду pwd -P , мы могли бы использовать обычную встроенную оболочку команда :

# cf. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_06

command -p pwd -P
#builtin command -p pwd -P  
#alias pwd=echo; PATH="$(command -p getconf PATH)" 'pwd' -P
0
ответ дан 3 December 2019 в 04:36

В windows7 я использую cmd с многочисленными жесткими ссылками NTFS на папки, cygwin, bash и perl находятся на моем пути, но pwd -P не работает, как было предложено выше. Этот сценарий просматривает дерево и ссылается на realdir:

CHN=$(cygpath -wam .)
echo $CHN
while true ;do
  OLD=$DIR
  DIR=$(cygpath -wam .) 
  if [[ ( -n "$OLD" ) && !( $OLD =~ $DIR* )]] ;then
    SYM=$DIR/${OLD##*/}
    CHN=$(echo $CHN | perl -lpe "s,$OLD,$SYM,")
    echo $CHN
  fi
  case $DIR in [A-Z]:/ | [A-Z]:/cyg* ) break ;; esac # TOPLEVEL
  cd $DIR/..
done 
0
ответ дан 3 December 2019 в 04:36

Теги

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