Bash kullanarak geçerli dizini değişkene kaydet?


111

Yapmaya çalıştığım şey, geçerli çalışma dizinini bulmak ve onu bir değişkene kaydetmek, böylece çalıştırabilirim export PATH=$PATH:currentdir+somethingelse. Varsayılan olarak cwd içeren bir değişkene sahip olup olmadıklarından tam olarak emin değilim.

Bash kullanarak geçerli dizini değişkene nasıl kaydederim?


bu yüzden onu bir değişkene kaydetmek için mydir = yapardım. ?
Stupid.Fat.Cat

1
yup az önce mydir = ile test edildi. sonra ls $ mydir -ama görecelidir, bu yüzden onu çalıştırdığınız her yerden pwd olacaktır
mcalex

Teşekkürler! Umarım bu benim için işe
yarar

Oh, bazı boşluklarım vardı. tt $ {PWD} çalışmalıydı. haha. ...
whoops

Yanıtlar:


189

Bu, geçerli çalışma dizininin mutlak yolunu değişkene kaydeder cwd:

cwd=$(pwd)

Sizin durumunuzda şunları yapabilirsiniz:

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

1
Herhangi bir nedenle başka bir dizine geçersem bu da cwddeğişkeni günceller . pwdHer seferinde işlevi çağırıyor gibi ... dpaste.de/Kn7F Bundan nasıl kaçınabilirim?
tutuca

1
$CWDkabuğunuzdaki özel (ayrılmış) bir ortam değişkeni olabilir. Bunun yerine,$CWD_MY_VAR
sampson-chen

Ters tikleri kullanmak da aynı şeyi yapar.
tutuca

1
Neden sadece kullanmıyorsun "$PWD"?
leetbacoon

28

.Bash_profile dosyamda aşağıdakiler var:

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

bu yüzden ne zaman bir dizini hatırlamak istersem, sadece yazabilirim, örneğin orayı işaretleyebilirim .

Sonra o konuma geri dönmek istediğimde, oraya cd $ yazıyorum


İyi çalışıyor ancak boşluk içeren yollar için, örneğin "Google Drive" cd "$foo"tüm yolun okunması için yapmanız gerekiyor
mercergeoinfo

3
export $1=`pwd` export $1="`pwd`" cd "$foo"cd $foo
Yoldaki boşluklarla sorunu aşmak

mercergeoinfo: Açıkça söylemek gerekirse, export $1="`pwd`"sözcük ayırma bir ödevin sağ tarafında gerçekleşmediğinden, genişletmelerden alıntı yapmak alışkanlık olarak alışmak için iyidir.
Larry

2
cdable_varsSadece yazmak için de bakınızcd there
John Cummings

4

Ödevinizde ekstra $:

export PATH=$PATH:${PWD}:/foo/bar

3

göreceli bir cevap için kullanın.

ile test edin:

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

İlki lssize mevcut dizindeki her şeyi gösterecek, ikincisi size kök dizindeki ( /) her şeyi gösterecektir .


1

mevcut çalışma dizini değişkeni, yani tam yol / ev / dev / diğer

dir=$PWD

tam yolu yazdır

echo $dir

0

Bir varyant daha:

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

0

Shell in-build değişkenini şu şekilde kullanabilirsiniz PWD:

export PATH=$PATH:$PWD+somethingelse
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.