Hej,
Dlaczego kiedy w pliku qq mam
alias rrr="echo ww"
rrr
i go wykonam ./qq
to wywala błąd
./qq: linia 2: rrr: nie znaleziono polecenia
a jak te polecenia wkleję ręcznie do konsoli to poprawnie wypisuje na ekran ww
?
Hej,
Dlaczego kiedy w pliku qq mam
alias rrr="echo ww"
rrr
i go wykonam ./qq
to wywala błąd
./qq: linia 2: rrr: nie znaleziono polecenia
a jak te polecenia wkleję ręcznie do konsoli to poprawnie wypisuje na ekran ww
?
Za każdym razem jak modyfikujesz pliki dotyczące basha, musisz odświeżyć jego stan.
. $HOME/.bashrc
Inaczej konsola używa poprzedniej konfiguracji.
Po drugie ./
odwołuje się do PLIKU w aktualnym folderze i nadaje mu eXecute bit = tryb wykonywalności. Skoro to tylko alias, a nie PLIK, to logiczne, że NIE MA TAKIEGO POLECENIA.
Aliasy przywołuje się bez dodatkowych operatorów.
Aby to co pokazałeś zadziałało powinno mieć nagłówek odnoszący się do basha ORAZ ustawienie stałej z przedrostkiem export
a nie alias.
Tym ./ odpalałem plik w którym miałem te polecenia i kojarzę, że aliasy używa się tak jak się zdefiniowało.
Dzięki, popróbuję sobie zaktualizować i zobaczę co z tego wyjdzie
Co próbujesz osiągnąć? :> Zabawa w poznawanie Shella czy konfiguracja Basha? :>
Nie masz tego uruchomić przez ./qq tylko wykonać “source”, czyli powiadomić basha o zdefiniowanym aliasie, a w pliku z aliasami nie wykonywać żadnej dodatkowej komendy:
rm -f qq
touch qq
echo "alias rrr=\"echo ww\"" > qq
Uaktualnianie konfiguracji bash:
source qq
LUB (kropka spacja plik)
. qq
Sprawdzenie czy alias jest rozpoznany:
alias
Jeśli tak, to klepnij rrr - powinno wyskoczyć ww.
Kompilacja Reactos XD
Chcę ją sobie wykonać w dockerze Gitlab CI
Mam takie polecenia, które działają w dobrze w lokalnej instancji dockera.
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
apt update
apt install -y clang meson ninja-build mingw-w64 git wget
wget https://svn.reactos.org/amine/RosBEBinFull.tar.gz -O RosBE.tar.gz
tar -xzf RosBE.tar.gz
RosBEBinFull/RosBE.sh
./configure.sh
cd output-MinGW-i386
ninja bootcd -j8
ale na gitlabie polecenie ./configure wywala błąd Could not detect RosBE.
co oznacza że RosBEBinFull/RosBE.sh
nie zadziałało prawidłowo.
Problem w tym, że na końcu tego pliku jest polecenie bash --rcfile "$_ROSBE_ROSSCRIPTDIR/RosBE-rc"
, które wydaje się otwierać nową sesję basha i w jego środku jest wykonywane dopiero ./configure.sh
ale w gitlabie jest ta nowa sesja automatycznie wyłączana, przez co ./configure
nie korzysta z aliasów z pliku RosBE-rc
zawierającego
# Set aliases
alias basedir="source $_ROSBE_ROSSCRIPTDIR/basedir.sh"
alias charch="source $_ROSBE_ROSSCRIPTDIR/charch.sh"
alias chdefdir="source $_ROSBE_ROSSCRIPTDIR/chdefdir.sh"
alias clean="$_ROSBE_ROSSCRIPTDIR/clean.sh"
alias help="$_ROSBE_ROSSCRIPTDIR/help.sh"
alias make="$_ROSBE_ROSSCRIPTDIR/build.sh"
alias makex="$_ROSBE_ROSSCRIPTDIR/build-multi.sh"
alias scut="source $_ROSBE_ROSSCRIPTDIR/scut.sh"
alias version="$_ROSBE_ROSSCRIPTDIR/version.sh"
# Change the current directory to the ReactOS source directory
basedir