Simpan direktori saat ini dalam variabel menggunakan Bash?

111

Apa yang saya coba lakukan adalah menemukan direktori kerja saat ini dan menyimpannya ke dalam variabel, sehingga saya dapat menjalankannya export PATH=$PATH:currentdir+somethingelse. Saya tidak sepenuhnya yakin apakah mereka memiliki variabel yang berisi cwd secara default.

Bagaimana cara menyimpan direktori saat ini dalam variabel menggunakan Bash?

Stupid.Fat.Cat
sumber
jadi untuk menyimpannya ke variabel akan saya lakukan mydir =. ?
Stupid.Fat.Cat
1
yup baru saja diuji dengan mydir =. lalu ls $ mydir -tapi itu relatif sehingga akan menjadi pwd dari mana pun Anda menjalankannya
mcalex
Terima kasih! semoga ini berhasil untuk saya
Stupid.Fat.Cat
Oh, saya punya beberapa ruang. tt $ {PWD} seharusnya sudah bekerja. ha ha. ... whoops
Stupid.Fat.Cat

Jawaban:

189

Ini menyimpan jalur absolut dari direktori kerja saat ini ke variabel cwd:

cwd=$(pwd)

Dalam kasus Anda, Anda dapat melakukan:

export PATH=$PATH:$(pwd)+somethingelse
sampson-chen
sumber
1
untuk beberapa alasan jika saya mengubah ke dir lain ini juga memperbarui cwdvariabel. Seperti jika memanggil pwdfungsi setiap kali ... dpaste.de/Kn7F Bagaimana cara menghindarinya?
tutuca
1
$CWDmungkin variabel lingkungan khusus (dicadangkan) di shell Anda. Coba nama yang berbeda, seperti$CWD_MY_VAR
sampson-chen
Menggunakan backticks melakukan hal yang sama.
tutuca
1
Mengapa tidak digunakan saja "$PWD"?
leetbacoon
28

Saya memiliki yang berikut ini di .bash_profile saya:

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

jadi kapan pun saya ingin mengingat sebuah direktori, saya cukup mengetik, mis. tandai di sana .

Kemudian ketika saya ingin kembali ke lokasi itu, saya cukup mengetik cd $ di sana

gerardw
sumber
Berfungsi dengan baik tetapi untuk jalur dengan spasi, misalnya "Google Drive" yang harus Anda lakukan cd "$foo"agar seluruh jalur dapat dibaca
mercergeoinfo
3
Untuk mengatasi masalah dengan spasi di jalur ubah export $1=`pwd` ke export $1="`pwd`" dan kemudian saat memanggil jalur seperti itu gunakan cd "$foo"alih-alih hanyacd $foo
mercergeoinfo
mercergeoinfo: Sebenarnya, tanda kutip dalam export $1="`pwd`"tidak diperlukan, karena pemisahan kata tidak terjadi di sisi kanan tugas, meskipun mengutip perluasan baik untuk digunakan sebagai kebiasaan.
Larry
2
Lihat juga cdable_varsuntuk mengetik sajacd there
John Cummings
4

Tugas Anda memiliki tambahan $:

export PATH=$PATH:${PWD}:/foo/bar
chepner
sumber
3

untuk jawaban relatif , gunakan.

uji dengan:

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

Yang pertama lsakan menampilkan semua yang ada di direktori saat ini, yang kedua akan menampilkan semua yang ada di direktori root ( /).

mcalex.dll
sumber
1

variabel direktori kerja saat ini yaitu path lengkap / home / dev / other

dir=$PWD

cetak jalur lengkap

echo $dir
Piyush Sharma
sumber
0

Satu varian lagi:

export PATH=$PATH:\`pwd`:/foo/bar
tema
sumber
0

Anda dapat menggunakan variabel shell in-build PWD, seperti ini:

export PATH=$PATH:$PWD+somethingelse
simmerlee
sumber