Сохранить текущий каталог в переменной с помощью Bash?


111

Я пытаюсь найти текущий рабочий каталог и сохранить его в переменной, чтобы я мог работать export PATH=$PATH:currentdir+somethingelse. Я не совсем уверен, есть ли у них переменная, которая по умолчанию содержит cwd.

Как сохранить текущий каталог в переменной с помощью Bash?


поэтому, чтобы сохранить его в переменной, я бы сделал mydir =. ?
Stupid.Fat.Cat 07

1
да, только что протестировали с mydir =. затем ls $ mydir - но это относительно, так что это будет pwd, откуда бы вы его ни запустили
mcalex

Спасибо! будем надеяться, что это
сработает

О, у меня было несколько пробелов. tt $ {PWD} должен был работать. ха-ха. ...
упс

Ответы:


189

Это сохраняет в переменной абсолютный путь к текущему рабочему каталогу cwd:

cwd=$(pwd)

В вашем случае вы можете просто сделать:

export PATH=$PATH:$(pwd)+somethingelse

1
по какой-то причине, если я перейду на другой каталог, это также обновит cwdпеременную. Например, если он вызывает pwdфункцию каждый раз ... dpaste.de/Kn7F Как мне этого избежать?
tutuca

1
$CWDможет быть специальной (зарезервированной) переменной среды в вашей оболочке. Попробуйте вместо этого другое имя, например$CWD_MY_VAR
sampson-chen

Использование обратных кавычек делает то же самое.
tutuca

1
Почему бы просто не использовать "$PWD"?
leetbacoon

28

В моем .bash_profile есть следующее:

function mark {
    export $1=`pwd`;
}

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

Затем, когда я хочу вернуться в это место, я просто набираю cd $ там


Работает хорошо, но для путей с пробелами, например "Google Диск", вы должны сделать, cd "$foo"чтобы был прочитан весь путь
mercergeoinfo

3
Чтобы обойти проблему с пробелами в пути, измените его export $1=`pwd` на, export $1="`pwd`" а затем при вызове таких путей используйте cd "$foo"вместо простоcd $foo
mercergeoinfo

mercergeoinfo: Строго говоря, кавычки в export $1="`pwd`"не нужны, поскольку разделение слов не происходит в правой части присваивания, хотя цитирование расширений полезно для привыкания.
Ларри

2
См. Также, cdable_varsчтобы набрать простоcd there
Джон Каммингс


3

для относительного ответа используйте.

тест с:

$ myDir=.
$ ls $myDir
$ cd /
$ ls $myDir

Первый lsпокажет вам все в текущем каталоге, второй покажет вам все в корневом каталоге ( /).


1

текущая переменная рабочего каталога, т.е. полный путь / home / dev / other

dir=$PWD

распечатать полный путь

echo $dir


0

Вы можете использовать встроенную переменную оболочки PWD, например:

export PATH=$PATH:$PWD+somethingelse
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.