Ketika saya mengubah direktori kerja dalam skrip dan menjalankannya, direktori kerja hanya mengubah jalur yang ditentukan saat dalam skrip


0

Ketika saya mengubah direktori kerja dalam skrip dan menjalankannya, direktori kerja hanya mengubah jalur yang ditentukan saat dalam skrip. Ini skrip saya: (ini untuk memastikan apakah itu benar-benar mengubah direktori)
#!/bin/bash
cd /media/hard/drive/partitionX/
pwd

Ketika saya menjalankannya, ia mengembalikan jalur yang ditentukan, tetapi direktori kerja saya di terminal tidak berubah. Bagaimana cara mengubah direktori kerja di terminal saya melalui skrip?


1
Anda perlu sourceskrip. Lihat pertanyaan serupa ini .
aguslr

Jawaban:


4

Ini normal. Direktori "saat ini" atau "berfungsi" adalah parameter per-proses, dan suatu proses hanya dapat mengubah direktori kerjanya sendiri . Skrip mandiri dieksekusi sebagai proses shell terpisah dan tidak dapat memengaruhi shell induk (pada kenyataannya, induk mungkin tidak selalu berupa shell).

Anda perlu menggunakan fitur-fitur internal shell Anda, seperti:

  • fungsi shell:

    mycd() {
        cd /media/hard/drive/partitionX/;
        pwd;
    }
  • alias shell:

    alias mycd='cd /media/hard/drive/partitionX; pwd'
  • "sumber" skrip alih-alih menjalankannya:

    . mycd.sh

Jika tujuan utama Anda adalah membuat pintasan ke direktori tertentu, Anda juga dapat menggunakan:

  • symlink di lokasi yang lebih nyaman:

    ln -s /media/hard/drive/partitionX ~/partX
    cd ~/partX
  • variabel ($ mydir):

    mydir=/media/hard/drive
    cd $mydir
  • fitur $ CDPATH:

    CDPATH=".:/media/hard/drive"
    cd partitionX

Wow, terima kasih banyak! Ini sangat membantu! Terima kasih atas jawaban terinci dengan semua kemungkinan!
Dash Conroy
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.