Lưu thư mục hiện tại trong biến bằng cách sử dụng Bash?


110

Những gì tôi đang cố gắng làm là tìm thư mục làm việc hiện tại và lưu nó vào một biến để tôi có thể chạy export PATH=$PATH:currentdir+somethingelse. Tôi không hoàn toàn chắc chắn nếu họ có một biến chứa cwd theo mặc định.

Làm cách nào để lưu thư mục hiện tại trong biến bằng Bash?


vì vậy để lưu nó vào một biến tôi sẽ làm mydir =. ?
Stupid.Fat.Cat

1
yup vừa thử nghiệm với mydir =. sau đó ls $ mydir -Nhưng đó là tương đối vì vậy nó sẽ là pwd từ bất cứ nơi nào bạn chạy nó
mcalex

cảm ơn! hãy hy vọng điều này hiệu quả với tôi
Stupid.Fat.Cat

Ồ, tôi đã có một số khoảng trống. tt $ {PWD} lẽ ra đã hoạt động. haha. ... rất tiếc
Stupid.Fat.Cat

Câu trả lời:


188

Thao tác này lưu đường dẫn tuyệt đối của thư mục làm việc hiện tại đến biến cwd:

cwd=$(pwd)

Trong trường hợp của bạn, bạn chỉ có thể làm:

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

1
vì một số lý do nếu tôi đổi sang dir khác, điều này cũng cập nhật cwdbiến. Giống như nếu nó gọi pwdhàm mỗi lần ... dpaste.de/Kn7F Làm cách nào để tránh điều đó?
tutuca

1
$CWDcó thể là một biến môi trường đặc biệt (dành riêng) trong trình bao của bạn. Hãy thử một tên khác thay vào đó, chẳng hạn như$CWD_MY_VAR
sampson-chen

Sử dụng backticks cũng tương tự.
tutuca

1
Tại sao không chỉ sử dụng "$PWD"?
leetbacoon

28

Tôi có những thứ sau trong .bash_profile của mình:

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

vì vậy bất cứ khi nào tôi muốn nhớ một thư mục, tôi có thể chỉ cần gõ, ví dụ như đánh dấu ở đó .

Sau đó, khi tôi muốn quay lại vị trí đó, tôi chỉ cần gõ cd $ vào đó


Hoạt động tốt nhưng đối với những con đường với không gian, ví dụ: "Google Drive" bạn phải làm cd "$foo"cho toàn bộ con đường để được đọc
mercergeoinfo

3
Để khắc phục vấn đề với các không gian trong sự thay đổi con đường export $1=`pwd` để export $1="`pwd`" rồi khi gọi đường dẫn ví dụ sử dụng cd "$foo"thay vì chỉcd $foo
mercergeoinfo

Mercergeoinfo: Nói một cách chính xác, các dấu ngoặc kép trong export $1="`pwd`"là không cần thiết, vì việc tách từ không xảy ra ở phía bên phải của một bài tập, mặc dù việc trích dẫn mở rộng là một thói quen tốt.
Larry

2
Xem thêm cdable_varsđể gõ chỉcd there
John Cummings


3

để có câu trả lời tương đối , hãy sử dụng.

kiểm tra với:

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

Đầu tiên lssẽ hiển thị cho bạn mọi thứ trong thư mục hiện tại, thứ hai sẽ hiển thị cho bạn mọi thứ trong thư mục gốc ( /).



0

Bạn có thể sử dụng biến shell in-build PWD, như sau:

export PATH=$PATH:$PWD+somethingelse

0

biến thư mục làm việc hiện tại tức là đường dẫn đầy đủ / home / dev / other

dir=$PWD

in đường dẫn đầy đủ

echo $dir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.