Làm cách nào để bắt đầu tất cả các phiên shell trong một thư mục khác ngoài $ HOME?


53

Khi tôi mở shell không đăng nhập trong Ubuntu, thư mục làm việc hiện tại của tôi là /home/user_name( $HOMEbiến môi trường của tôi ), nhưng tôi muốn thay đổi điều này để khi tôi khởi động thiết bị đầu cuối của mình, tôi đang ở một thư mục khác.

Tôi đã đọc rằng khi tôi khởi động thiết bị đầu cuối của mình trong Ubuntu, một .bashrctệp có nguồn gốc. Vì vậy, tôi đã thêm

export HOME=/home/user_name/Documents 

vào .bashrctập tin của tôi Bây giờ, khi tôi mở thiết bị đầu cuối của tôi, tôi vẫn còn trong /home/user_namethư mục.

Làm thế nào tôi có thể thay đổi điều này?



3
Nó cũng có thể đáng xem xét không làm điều này. Thiết kế của UNIX không được những người đi trước truyền lại cho những gì bạn biết.
Sean D

Câu trả lời:


52

Trước hết, loại bỏ dòng đó từ của bạn .bashrc. Cách để thực hiện điều này không phải bằng cách chơi với $HOME, biến đó sẽ luôn trỏ đến thư mục chính của bạn và bạn không muốn thay đổi điều đó chỉ để vỏ của bạn bắt đầu ở một nơi khác.

Tôi chắc chắn sẽ có một cách thanh lịch hơn để làm điều này nhưng như một cách giải quyết tạm thời, bạn chỉ cần thêm dòng này vào .bashrc:

cd ~/Documents 

Vì tệp đó được đọc mỗi khi bạn khởi động trình bao không đăng nhập mới (mở một thiết bị đầu cuối mới), cdlệnh sẽ được thực thi và các thiết bị đầu cuối của bạn sẽ bắt đầu ~/Documentsnhư bạn muốn.


Lưu ý rằng nó sẽ ảnh hưởng đến tất cả các shell tương tác không đăng nhập (và các shell đăng nhập nếu bạn lấy bashrc từ bash_profile của bạn) các shell không tương tác được bắt đầu bởi sshd.
Stéphane Chazelas

@ StéphaneChazelas Bạn có chắc không? Thông thường có một [[ -z "$PS1" ]] && exitngười bảo vệ ở đầu .bashrcnên ngăn chặn điều này cho các phiên không tương tác.
Martin Uting

2
@queueoverflow thường? Trong hệ điều hành nào? Trong phân phối nào? Không có trên Debian, SuSe hoặc CentOS. Trên thực tế, tôi nghĩ rằng tôi chỉ từng thấy điều đó trên Ubuntu.
terdon

@terdon Tôi đã thấy nó trên Ubuntu và nghĩ rằng đó là trường hợp chung.
Martin Uting

20

Thiết bị đầu cuối sẽ bắt đầu trong thư mục làm việc mà nó kế thừa từ cha mẹ của nó.

Tuy nhiên, một số cho phép ghi đè lên nó thông qua cài đặt cấu hình.

Với gnome-terminal, bạn có thể chỉnh sửa hồ sơ của mình, đánh dấu chạy một lệnh tùy chỉnh thay vì trình bao của tôi và thực hiện:

sh -c 'cd ~/Documents; exec "${SHELL:-sh}"'

1

Đây là những gì tôi đưa vào ~/.bash_profile:

alias curDir="pwd | sed -e 's/ /\\ /'"
alias save='echo `curDir` > ~/.saved_dir'
alias saved='cd `cat ~/.saved_dir`'
saved

và tôi dựa vào điều này mọi lúc. Về cơ bản, khi tôi đang làm việc trên một dự án nào đó, tôi sẽ có savemột thư mục chính cho nó và sau đó mọi phiên tiếp theo bắt đầu từ đó. Sau đó, khi tôi thay đổi dự án hoặc bất cứ điều gì, tôi sẽ chỉ saveở một nơi khác.

Tôi đã tìm thấy câu hỏi này khi tìm kiếm một cách tốt hơn, nhưng những gì tôi nhận được là thích hợp với tôi hơn là mã hóa một thư mục cụ thể.


Điều này cũng hoạt động tốt trong git bash. Chỉ cần nhớ khởi động lại bash shell hoặc sử dụng (tôi nghĩ) "source ~ / .bash_profile" sau khi thay đổi tệp.
Tim

0

Đối với những người đang xem .bashrctập tin ở đâu , nói chung nó là một tập tin ẩn trong thư mục chính.

Để tìm thấy nó:

Mở thiết bị đầu cuối của bạn và đi đến thư mục chính, và sau đó:

ls -al

để hiển thị tất cả các tập tin ẩn. Bây giờ bạn sẽ có thể xem .bashrctập tin của bạn .

Để thay đổi thư mục mặc định

  1. Mở .bashrctệp trong trình soạn thảo văn bản của bạn bằng cách nhập lệnh:

    gedit .bashrc
  2. Chỉnh sửa tệp này bằng cách thêm lệnh của bạn vào cuối cùng, như:

    cd ~/YourDirectoryName
  3. Lưu tệp và khởi động lại thiết bị đầu cuối.


Câu hỏi không hỏi làm thế nào để chỉnh sửa .bashrc, anh ấy đã hoàn thành nó. Và câu trả lời của bạn chỉ là sự lặp lại câu trả lời của @ terdon từ hai năm trước.
Davor Cubranic 17/10/18
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.