Saya memiliki skrip yang dimulai seperti ini
#!/bin/bash
VALKYRIE=~/myProjects/valkyrie
source $VALKYRIE/cluster.conf
tetapi ketika saya menjalankannya ia kembali
line 2: ~/myProjects/valkyrie/cluster.conf: No such file or directory
tetapi file itu ada dan ketika saya menjalankannya source ~/myProjects/valkyrie/cluster.conf
berjalan dengan baik. Ada ide? Saya mengatur VALKYRIE
variabel di tempat lain sehingga hard-code di jalan bukanlah pilihan.
source "${VALKYRIE}/cluster.conf"
,.~
tidak berkembang dengan baik. Ketika saya menjalankan skrip Anda dengan jalur yang sengaja dibuat-buat, kesalahannya tidak mengatakan~
, tetapi memperluas jalurnya. Bisakah Anda mencoba mengganti~
dalam skrip Anda dengan jalur absolut? Coba juga menjalankan yang berikut ini dalam sebuah skripecho ~
.$HOME
bukan~
.~/.pam_environment
bukan skrip shell, jadi ia tidak melakukan hal-hal umum yang Anda harapkan dari shell, seperti ekspansi tilde dan ekspansi parameter, jadi tidak~
juga tidak$HOME
akan diganti. Jika Anda memindahkan baris itu~/.profile
sebagai gantinya, dan menambahkanexport
di depan, itu akan berfungsi.Jawaban:
~
tampaknya tidak berkembang dengan baik. Ketika saya menjalankan skrip Anda dengan jalur yang sengaja dibuat-buat, kesalahannya tidak mengatakan~
, tetapi perluas jalurnya (mis ./home/sparhawk/fakepath
Tidak~/fakepath
. Anda bisa mencoba menggunakan$HOME
sebagai gantinya~
, atau menggunakan path lengkap dalam skrip sebagai gantinya.(Saya tidak yakin mengapa
~
tidak bekerja pada sistem Anda, karena skrip Anda berfungsi dengan baik untuk saya.)sumber
$HOME
lebih baik daripada~
di variabel~
?x="~/.bashrc"; ls $x
- dalam urutan ekspansi untuk perintah "ls", bash mencari tilde dan tidak menemukannya; akhirnya bash melihat variabel dan mengembangkannya. bash tidak kembali dan mencari tildes lagi, pada titik ini hanya karakter biasa. dan tidak ada file di direktori saat ini yang dimulai dengan tilde.x=~/".bashrc"; ls $x
berhasil. Terimakasih atas infonya.