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?


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

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


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

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 ( /).


1

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

dir=$PWD

cetak jalur lengkap

echo $dir

0

Satu varian lagi:

export PATH=$PATH:\`pwd`:/foo/bar

0

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

export PATH=$PATH:$PWD+somethingelse
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.