Сохранить текущий каталог в переменной с помощью 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
Джон Каммингс
4

В вашем задании есть дополнительные $:

export PATH=$PATH:${PWD}:/foo/bar
Чепнер
источник
3

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

тест с:

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

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

Макалекс
источник
1

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

dir=$PWD

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

echo $dir
Пиюш Шарма
источник
0

Еще один вариант:

export PATH=$PATH:\`pwd`:/foo/bar
тема
источник
0

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

export PATH=$PATH:$PWD+somethingelse
Симмерли
источник