Mam skrypt, który zaczyna się w ten sposób
#!/bin/bash
VALKYRIE=~/myProjects/valkyrie
source $VALKYRIE/cluster.conf
ale kiedy go uruchomię, wraca
line 2: ~/myProjects/valkyrie/cluster.conf: No such file or directory
ale plik istnieje i po uruchomieniu source ~/myProjects/valkyrie/cluster.conf
działa poprawnie. Dowolny pomysł? Ustawiam VALKYRIE
zmienną gdzie indziej, więc twardy kod na ścieżce nie jest opcją.
~
nieprawidłowym rozszerzaniem. Kiedy uruchamiam skrypt z celowo fałszywą ścieżką, błąd nie mówi ~
, ale rozszerza ścieżkę. Czy możesz spróbować zastąpić ~
w skrypcie ścieżkę bezwzględną? Spróbuj także uruchomić następujące polecenie w skrypcie echo ~
.
$HOME
zamiast ~
.
~/.pam_environment
nie jest skryptem powłoki, więc nie wykonuje typowych rzeczy, których można oczekiwać od powłoki, takich jak interpretacja tyldy i interpretacja parametrów, więc ani ~
nie $HOME
zostanie zastąpiona. Jeśli ~/.profile
zamiast tego przeniesiesz tę linię i dodasz ją export
z przodu, powinna ona działać.
source "${VALKYRIE}/cluster.conf"
.