Basis van Linux en de opdrachtregel

Een uitvoerbaar script run.sh in de huidige directory geeft „command not found” als het wordt gestart door „run.sh” te typen, maar wordt wel uitgevoerd als „./run.sh” wordt getypt. Wat is de reden?

  1. Arun.sh heeft geen uitvoerrecht, en alleen met ./ ervoor kan het zonder dat recht worden uitgevoerd
  2. BEen commandonaam zonder slash wordt alleen gezocht in de directory's uit de omgevingsvariabele PATH, die de huidige directory meestal niet bevat
  3. CDe #!/bin/bash op de eerste regel van run.sh (de shebang) wordt alleen gelezen als het met ./ ervoor wordt uitgevoerd
Antwoord en toelichting tonen

Antwoord: B. Een commandonaam zonder slash wordt alleen gezocht in de directory's uit de omgevingsvariabele PATH, die de huidige directory meestal niet bevat

Als de shell een commandonaam zonder slash krijgt, zoekt hij op volgorde in de directory's die, gescheiden door dubbele punten, in de omgevingsvariabele PATH staan (/usr/local/bin:/usr/bin enzovoort), en voert hij uit wat hij vindt. De huidige directory wordt meestal niet in PATH opgenomen, zodat niet per ongeluk een kwaadaardig programma met dezelfde naam wordt uitgevoerd dat ergens anders is neergezet. Een pad met een slash, zoals ./run.sh, voert dat bestand rechtstreeks uit zonder PATH te doorzoeken. De #!/bin/bash op de eerste regel (de shebang) geeft de interpreter op die het script uitvoert, op welke manier het ook wordt gestart.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van Linux en de opdrachtregel

  1. Wat is de combinatie van de uitvoer van de twee bash -c-commando's als de bovenstaande commando's in volgorde worden uitgevoerd?
  2. Wat is de belangrijkste functie van een pakketbeheersysteem in Linux (apt op Debian-gebaseerde systemen, dnf op Red Hat-gebaseerde systemen enzovoort)?
  3. Wat is op een Linux-systeem met systemd het verschil tussen „systemctl start license.service” en „systemctl enable license.service” voor de service license.service?
  4. De regel „30 2 * * 1 /home/alice/backup.sh” is in cron ingesteld. Wanneer wordt backup.sh uitgevoerd?
  5. Een Linux-server waarschuwt dat de vrije schijfruimte bijna op is. Welke combinatie van een commando om per bestandssysteem het gebruik en de vrije ruimte te controleren, en een commando om de ruimte op te tellen die de bestanden in een directory innemen, is juist?