Masalah ini sudah lama saya alami. Setelah menjalankan terminal .profile, dan file .bashrc tidak berfungsi (tidak dijalankan). Bisakah Anda menunjukkan di mana saya harus mencari sumber masalah?
ya ... Anda benar alasannya benar-benar bodoh - izin salah chmod + x ~ / .profile dan semuanya bekerja dengan baik.
5
@ xTrol: Itu tidak masuk akal, ~/.profiletidak memerlukan izin eksekusi. (Shell sumbernya, itu tidak menjalankannya). Coba chmod -x ~/.profiledan lihat apakah masih berfungsi.
Keith Thompson
Jawaban:
40
Saya memiliki masalah yang sama dengan saya .profiletidak dijalankan. Ternyata (seperti yang dijelaskan dalam jawaban Apple StackExchange ) bahwa jika Anda memiliki .bash_profileatau .bash_loginfile, maka Anda .profileakan diabaikan oleh bash.
/etc/profiledan ~/.profiledibaca untuk shell login interaktif, dan
~/.bashrc dibaca untuk shell non-login interaktif.
Jika mesin UNIX Anda yang lain secara otomatis membaca ~/.bashrcbahkan untuk shell login interaktif, itu karena seluruh sistem /etc/
profilememiliki garis yang berbunyi ~/.bashrc. Sistem OS X /etc/profiletidak memiliki satu.
Jadi, jika Anda ingin menjalankan ~/.bashrcbahkan untuk shell login interaktif, Anda harus memasukkan satu baris
Dan untuk mengisi bagian yang hilang di sini: Shell terminal (yang menjadi pertanyaan OP) adalah default shell login interaktif.
LarsH
3
Coba sumber mereka "dengan tangan":
source ~/.profile
dan lihat apa yang terjadi. Perhatikan bahwa, seperti yang orang lain tunjukkan,. Profil diambil dari shell login, .bashrc oleh shell non-login; jadi cobalah satu atau yang lain, tidak keduanya.
Poin kuncinya di sini adalah ' -' di depan nama shell; yang memberitahu shell untuk menjalankan melalui profil dan hal-hal terkait. Jika Anda tidak melihat itu di windows Anda saat ini, Anda mungkin perlu menipu dengan pengaturan sampai Anda melakukannya.
Panel pengaturan di preferensi terminal juga mencantumkan opsi shell. Saya memiliki / bin / sh terdaftar di tambang.
Anda seharusnya tidak membutuhkan ini
Jika yang terburuk menjadi yang terburuk, Anda dapat melakukan seperti yang saya lakukan pada beberapa sistem tidak kooperatif di masa lalu - saya membuat program 'loginsh' yang dapat saya jalankan dari windows, dan pada gilirannya akan menjalankan shell yang saya pilih dengan ' -' awalan untuk memerintahkannya berfungsi sebagai shell login.
#include <string.h>#include <stdlib.h>#include <unistd.h>#include "stderr.h"#include "jlss.h"#ifndef DEFAULT_SHELL#define DEFAULT_SHELL "/bin/sh"#endif /* DEFAULT_SHELL */#ifndef MAX_SHELLBASENAME#define MAX_SHELLBASENAME 256#endif /* MAX_SHELLBASENAME */#ifndef lint
static const char sccs[]="@(#)$Id: loginsh.c,v 4.2 2005/06/22 19:44:07 jleffler Exp $";#endif
int main(int argc, char **argv){
char *shell;
char shellname[MAX_SHELLBASENAME];
err_setarg0(argv[0]);/*Which shell to use?*/if((shell = getenv("SHELL"))==(char *)0)
shell = DEFAULT_SHELL;/*Set up argv[0]in new argument list; reuse old argv space */
shellname[0]='-';
strcpy(&shellname[1], jlss_basename(shell));
argv[0]= shellname;/*Execv must work -- the shell must be an executable program */
execv(shell,&argv[0]);
err_syserr("cannot execute shell %s\n", shell);/* NOTREACHED */return(EXIT_FAILURE);}
( "stderr.h"Header dan ' err_*' rutin adalah paket pelaporan kesalahan yang saya gunakan di mana-mana. jlss_basename()Fungsinya pada dasarnya sama dengan versi yang disediakan sistem seperti ditemukan di POSIX <libgen.h>.)
Informasi bagus di atas, tetapi saya pikir saya akan membagikan beberapa spesifik tentang masalah yang saya miliki dan solusi yang saya temukan.
Kebutuhan: Tambahkan direktori ke PATH pada OSX 10.8 (ML).
Masalahnya: Bimbingan sering kali "mod the .profile di direktori home Anda". Agak membingungkan karena, secara default, file ini tidak ada di OSX. Ragu membingungkan karena begitu Anda menambahkan pernyataan ekspor untuk menambahkan direktori baru ke PATH yang ada ... itu tidak berfungsi. Tercakup di atas.
Solusinya: Saya menambahkan pernyataan ekspor ke .bash_profile saya (juga di direktori home).
Saya yakin ada banyak cara untuk menguliti kucing ini. Yang ini berhasil untuk saya. Agak menginspirasi kepercayaan: .bash_profile sudah ada dan saya bisa melihat bahwa perangkat lunak lain yang diinstal (misalnya Ruby) telah memodifikasinya. Jika ada solusi yang lebih baik, saya akan senang mendengarnya!
~/.profile
tidak memerlukan izin eksekusi. (Shell sumbernya, itu tidak menjalankannya). Cobachmod -x ~/.profile
dan lihat apakah masih berfungsi.Jawaban:
Saya memiliki masalah yang sama dengan saya
.profile
tidak dijalankan. Ternyata (seperti yang dijelaskan dalam jawaban Apple StackExchange ) bahwa jika Anda memiliki.bash_profile
atau.bash_login
file, maka Anda.profile
akan diabaikan oleh bash.sumber
.bash_login
ditambahkan setelah saya menginstalrvm
.Saya kira T&J ini harus pergi ke Superuser, tetapi bagaimanapun:
Menurut bagian INVOCASI dari halaman manual ,
/etc/profile
dan~/.profile
dibaca untuk shell login interaktif, dan~/.bashrc
dibaca untuk shell non-login interaktif.Jika mesin UNIX Anda yang lain secara otomatis membaca
~/.bashrc
bahkan untuk shell login interaktif, itu karena seluruh sistem/etc/ profile
memiliki garis yang berbunyi~/.bashrc
. Sistem OS X/etc/profile
tidak memiliki satu.Jadi, jika Anda ingin menjalankan
~/.bashrc
bahkan untuk shell login interaktif, Anda harus memasukkan satu barisdi Anda
~/.profile
.sumber
Coba sumber mereka "dengan tangan":
dan lihat apa yang terjadi. Perhatikan bahwa, seperti yang orang lain tunjukkan,. Profil diambil dari shell login, .bashrc oleh shell non-login; jadi cobalah satu atau yang lain, tidak keduanya.
sumber
Di preferensi terminal Anda, periksa di panel 'Startup'. Anda memiliki opsi:
Saya telah memilih 'standar' ... jika Anda memiliki perintah khusus yang dipilih, itu mungkin merupakan faktor.
Titik selanjutnya untuk memeriksa adalah apakah shell dimulai sebagai shell login. Ketika saya melakukan
ps
daftar, saya melihat:Poin kuncinya di sini adalah '
-
' di depan nama shell; yang memberitahu shell untuk menjalankan melalui profil dan hal-hal terkait. Jika Anda tidak melihat itu di windows Anda saat ini, Anda mungkin perlu menipu dengan pengaturan sampai Anda melakukannya.Panel pengaturan di preferensi terminal juga mencantumkan opsi shell. Saya memiliki / bin / sh terdaftar di tambang.
Anda seharusnya tidak membutuhkan ini
Jika yang terburuk menjadi yang terburuk, Anda dapat melakukan seperti yang saya lakukan pada beberapa sistem tidak kooperatif di masa lalu - saya membuat program 'loginsh' yang dapat saya jalankan dari windows, dan pada gilirannya akan menjalankan shell yang saya pilih dengan '
-
' awalan untuk memerintahkannya berfungsi sebagai shell login.(
"stderr.h"
Header dan 'err_*
' rutin adalah paket pelaporan kesalahan yang saya gunakan di mana-mana.jlss_basename()
Fungsinya pada dasarnya sama dengan versi yang disediakan sistem seperti ditemukan di POSIX<libgen.h>
.)sumber
Informasi bagus di atas, tetapi saya pikir saya akan membagikan beberapa spesifik tentang masalah yang saya miliki dan solusi yang saya temukan.
Kebutuhan: Tambahkan direktori ke PATH pada OSX 10.8 (ML).
Masalahnya: Bimbingan sering kali "mod the .profile di direktori home Anda". Agak membingungkan karena, secara default, file ini tidak ada di OSX. Ragu membingungkan karena begitu Anda menambahkan pernyataan ekspor untuk menambahkan direktori baru ke PATH yang ada ... itu tidak berfungsi. Tercakup di atas.
Solusinya: Saya menambahkan pernyataan ekspor ke .bash_profile saya (juga di direktori home).
Saya yakin ada banyak cara untuk menguliti kucing ini. Yang ini berhasil untuk saya. Agak menginspirasi kepercayaan: .bash_profile sudah ada dan saya bisa melihat bahwa perangkat lunak lain yang diinstal (misalnya Ruby) telah memodifikasinya. Jika ada solusi yang lebih baik, saya akan senang mendengarnya!
sumber