Зберегти поточний каталог у змінній за допомогою Bash?


111

Що я намагаюся зробити - це знайти поточний робочий каталог і зберегти його в змінну, щоб я міг запускатися export PATH=$PATH:currentdir+somethingelse. Я не зовсім впевнений, чи є у них змінна, яка містить замовчуванням cwd.

Як зберегти поточний каталог у змінній за допомогою Bash?


тому для збереження його до змінної я би зробив mydir =. ?
Stupid.Fat.Cat

1
yup щойно перевірений mydir =. то ls $ mydir - але це відносно, тому це буде pwd звідки б ви не запустили
mcalex

Дякую! сподіваємося, що це працює для мене
Stupid.Fat.Cat

О, у мене були місця. tt $ {PWD} повинен був працювати. ха-ха. ...
оголене

Відповіді:


188

Це зберігає абсолютний шлях поточного робочого каталогу до змінної cwd:

cwd=$(pwd)

У вашому випадку ви можете просто зробити:

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

1
чомусь, якщо я перейду на інший dir, ця версія cwdтакож оновлює змінну. Наче, якщо він викликає pwdфункцію щоразу ... dpaste.de/Kn7F Як я можу цього уникнути?
тутука

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.