OS X - Buat direktori tempat sampah pribadi (~ / tempat) dan jalankan skrip tanpa menentukan path lengkapnya

19

Jadi, apa yang saya coba lakukan adalah membuat bindirektori pribadi di folder rumah saya. Saya membuat folder berikut:

/Users/thi/bin

Saya meletakkan skrip saya di folder ini, tetapi jika saya mengetik di Terminal:

myScript

Itu tidak berjalan.

Saya diberitahu bahwa saya harus mengekspor path bin ini, sesuatu yang berhubungan dengan echo $PATH, tetapi saya tidak tahu bagaimana melakukannya.

Thi G.
sumber
lihat juga menjelang akhir apple.stackexchange.com/a/98626
nohillside

Jawaban:

20

Anda perlu menambahkan yang berikut ke file ~/.profile:

export PATH=/Users/thi/bin:$PATH

Kemudian source ~/.profile

Perhatikan, Anda mungkin perlu membuat file ini, dan karena itu dimulai dengan file .itu mungkin tidak terlihat di finder untuk diedit melalui aplikasi seperti editor teks. Untuk daftar semua file termasuk yang tersembunyi, gunakan:

ls -la ~/
tfjgeorge
sumber
Jika saya menambahkan ekspor PATH = / Users / thi / bin: $ PATH ke file .bashrc saya, apakah ini akan berfungsi? Apakah itu benar?
Thi G.
12
Lebih baik digunakan $HOME/bindaripada /Users/thi/bin. Anda kemudian dapat menyalin pengaturan Anda ke komputer lain, di mana nama pengguna Anda mungkin berbeda.
lhf
Jika saya mengetik di terminal: PATH = $ HOME / bin: $ PATH dan kemudian ketik: export PATH. Apakah ini akan berhasil?
Thi G.
1
Jika Anda melakukannya, itu akan mengubah pengaturan sekarang, tetapi tidak pada booting masa depan. Untuk mengubah jalur dengan cara yang selamat dari reboot, Anda harus memasukkan perintah-perintah itu dalam .profilefile Anda .
Daniel
1
Hebat, terima kasih atas jawabannya. Saya menambahkan export PATH=$HOME/bin:$PATHke $HOME/.bash_profile.
Thi G.
10

Jika Anda menggunakan bash, tambahkan baris seperti ini ke ~/.bash_profile:

PATH=~/bin:$PATH

PATHditandai untuk diekspor secara default, jadi Anda tidak perlu menggunakan export.

Jika keduanya ~/.bash_profiledan ~/.profileada, bash hanya membaca ~/.bash_profileketika dipanggil sebagai shell login interaktif. ~/.profilejuga digunakan oleh shell lain yang mungkin tidak memahami opsi konfigurasi yang sama dengan bash.

Terminal dan iTerm 2 membuka shell baru sebagai shell login secara default. Ketika bash dipanggil sebagai shell login interaktif, bash dibaca ~/.bash_profiletetapi tidak ~/.bashrc. Emulator terminal pada platform lain sering membuka cangkang baru sebagai cangkang non-login, jadi misalnya bash membaca ~/.bashrctetapi tidak ~/.bash_profile. Pengguna OS X sering menggunakan ~/.bash_profilesebagai file konfigurasi pribadi yang sesuai dengan ~/.bashrcpada platform lain, tetapi juga umum untuk sumber ~/.bashrcdari ~/.bash_profileatau memberitahu Terminal atau iTerm 2 untuk membuka shell baru sebagai shell non-login.

Anda juga dapat mengubah jalur lebih global di /etc/pathsatau /etc/launchd.conf, tetapi dalam banyak konteks jalur masih akan default /usr/bin:/bin:/usr/sbin:/sbin. Dan saya hanya benar-benar perlu mengubah jalur di shell dan editor teks.

Lri
sumber
Hebat, terima kasih atas jawabannya. Saya menambahkan export PATH=$HOME/bin:$PATHke $HOME/.bash_profile.
Thi G.
Anda tidak perlu ekspor , dan keduanya ~(ketika tidak dikutip) dan $HOMEdiperluas sebelum penugasan variabel baik saat menggunakan ekspor atau penugasan biasa.
Lri
Lauri Ranta, apa yang Anda sukai secara pribadi, .bash_profileatau .profile? Atau Anda memiliki .bashrcdi direktori home Anda?
Thi G.
Saya dulu hanya menggunakan .bash_profile, tapi sekarang saya menggunakan .bashrc sebagai file konfigurasi utama saya dan .bash_profile saya hanya berisi . ~/.bashrc. Shell baru dibuka sebagai shell non-login dalam mode shell di emacs dan di tmux. Saya tidak akan menggunakan .profile sebagai file konfigurasi utama saya, karena ini juga dibaca oleh shell lain seperti ksh.
Lri
3

Anda biasanya akan meletakkan path tambahan setelah $PATHsuka PATH=$PATH:/$HOME/binkarena jika Anda tidak ingin menggantikan executable lain dengan nama yang sama yang mungkin ada /bin, dll.

Nic MacKenzie
sumber
4
Orang mungkin dengan mudah berpendapat bahwa Anda akan meletakkannya $HOME/bindi awal tepat karena alasan itu. Tetapi kuncinya adalah bahwa urutan direktori dalam $PATHmasalah dan bahwa shell akan memilih perintah yang cocok pertama. Terima kasih telah menunjukkan ini.
nohillside