Điểm:0

Di chuyển đến thư mục mà không cần sử dụng "exec"

lá cờ in

Trong máy ảo của tôi, các dự án của tôi nằm ở /var/www/vhosts/projectname/httpdocs/.
Khi tôi khởi động máy, tôi bắt đầu tại /home/vagrant/.

Tôi đã tạo một tập lệnh đưa tôi đến dự án mà tôi muốn ngay lập tức. Vấn đề là, tập lệnh sử dụng exec và tạo phiên mới mỗi khi tôi sử dụng.

Đây là mã của tôi:

#!/usr/bin/env zsh

nếu [ -z "$1" ]; sau đó
   echo "Không có dự án nào được chỉ định"
   thoát 1
fi

cd /var/www/vhosts/"$1"/httpdocs/ || lối ra

tiếng vang "---------------------"
echo "Dự án: $1"
tiếng vang " https://$1.vm/"
tiếng vang " https://$1.vm/typo3"
tiếng vang "---------------------"

giám đốc điều hành zsh

Có cách nào khác để đặt đường dẫn hiện tại của tôi mà không cần tạo phiên mới không?
Cảm ơn

muru avatar
lá cờ us
Tại sao bạn cần một kịch bản? Tại sao không viết một hàm và đặt mọi thứ trừ `exec zsh` vào đó?
bac0n avatar
lá cờ cn
..... và thay đổi tất cả exit thành return ...
Điểm:4
lá cờ cn

Một tập lệnh thực sự chạy trong một lớp con, nơi thư mục hiện tại được thay đổi. Môi trường này bị hủy khi tập lệnh kết thúc. Mở một shell tương tác (giám đốc điều hành) là cần thiết để tương tác với môi trường đã sửa đổi, môi trường này sẽ mở ra một lớp vỏ con khác ngoài lớp mà tập lệnh của bạn đang chạy.

Sử dụng một chức năng vỏ có thể phù hợp nhất cho những gì bạn muốn làm.

đã thay đổi () {
   cd "$1"
   echo "Dự án: $1"
}

Bao gồm chức năng như vậy trong của bạn ~/.zshrc tập tin (.bashrc cho người dùng bash). Khi bạn thoát ra rồi mở lại terminal, lệnh thay đổi sẽ có sẵn.

Ngoài ra, bạn nên nguồn kịch bản của bạn hơn là thực hiện nó. Ngoài ra, điều đó có thể được thực hiện khá tao nhã bằng cách xác định bí danh:

alias changeir='nguồn <tên đường dẫn của tập lệnh của bạn>'

Ngoài ra, một định nghĩa bí danh nên được đưa vào ~/.zshrc (hoặc ~/.bashrc) phải kiên trì. Tương tự như cách tiếp cận trước, một lệnh thay đổi trở nên khả dụng tự động hoàn thành với Chuyển hướng.

Đối với trường hợp sử dụng tổng quát hơn, khi bạn chỉ muốn dễ dàng chuyển đổi sang một số thư mục nằm sâu trong cây, hãy xem nhiều tùy chọn khác đây.

vanadium avatar
lá cờ cn
@steeldriver đúng là bạn và tôi đã sai. Có lẽ một chức năng trình bao phù hợp nhất cho công việc này, mà tôi hiện đã đưa vào câu trả lời.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.